本篇將介紹Python的迭代,更多內(nèi)容請參考:Python學(xué)習(xí)指南
簡介
在Python中,如果給定一個(gè)list或者tuple,我們可以通過for循環(huán)來遍歷這個(gè)list或者tuple,這種遍歷我們稱為迭代(Iteration)
在Python中,迭代是for...in來完成的,而很多語言比如C或者Java,迭代list是通過下標(biāo)完成的,比如Java代碼:
for(i=0; i<list.length; i++){
n = list[i]
}
可以看出,Python的for循環(huán)抽象程度要高于Java的for循環(huán)
因?yàn)?,Python的for循環(huán)不僅可以用在list或tuple上,還可以用在任何可迭代對象上。
那么,可迭代對象有哪些呢?怎么判斷一個(gè)對象是否是可迭代對象呢?可以用collections模板里面的iterable包的isinstance函數(shù)進(jìn)行判斷:
>>>from collections import Iterable #載入模塊
>>>isinstance('abc', Iterable) #字符串是可迭代對象嗎?
True
>>> isinstance([1,2,3],Iterable) #list是可迭代對象嗎?
True
>>> isinstance({'dede':123},Iterable) #字典是可迭代對象嗎?
True
字典的迭代
>>> d={'python':1,'php':2,'java':3}
#默認(rèn)迭代的是key
>>> for i in d:
print(i)
python
php
java
#自定義迭代key
>>> for key in d.keys():
print(key)
python
php
java
#迭代value
>>> for value in d.values():
print(value)
2
#同時(shí)迭代key,value
>>> for k , v in d.items():
print(k,v)
python 1
php 2
java 3
>>>
列表和元祖包含下標(biāo)的迭代
#對于一個(gè)列表
language = ['python', 'php', 'java', 'c++']
#第一種
for x in range(len(language)):
print(x, language[x])
#第二種
for i, value in enumerate(language):
print(i, value)
#運(yùn)行結(jié)果
0 python
1 php
2 java
3 c++
#在同一行輸出:
for i ,value in enumerate(lanage):
print(i,value ,end=', ')
結(jié)果:
0 python, 1 php, 2 java, 3 c++,
任何可迭代對象都可以作用與
for循環(huán),保活我們自定義的數(shù)據(jù)類型,只要符合迭代條件,就可以使用for循環(huán)