若是給定一個list或tuple,能夠經過for循環來遍歷這個list或tuple,這種遍歷咱們稱爲迭代(Iteration)
在Python中,迭代是經過for ... in來完成的
Python的for循環抽象程度要高於C的for循環,由於Python的for循環不只能夠用在list或tuple上,還能夠做用在其餘可迭代對象上
當使用for循環時,只要做用於一個可迭代對象,for循環就能夠正常運行,而無需太關心該對象到底是list仍是其餘數據類型
任何可迭代對象均可以做用於for循環,包括自定義的數據類型,只要符合迭代條件,就可使用for循環函數
迭代list
迭代list是經過下標完成的spa
for x in range(5): print(x)
迭代dictcode
list這種數據類型雖然有下標,但不少其餘數據類型是沒有下標的,但只要是可迭代對象,不管有無下標,均可以迭代,好比dict
由於dict的存儲不是按照list的方式順序排列,因此,迭代出的結果順序極可能不同對象
d = {'a': 1, 'b': 2, 'c': 3} for key in d: #默認狀況下,dict迭代的是key print(key) #輸出:a # b # c for key in d.values(): #若是要迭代value,可用for value in d.values() print(key) #輸出:1 # 2 # 3 for k, v in d.items(): #若是要同時迭代key和value,能夠用for k, v in d.items() print(k, v) #輸出:a 1 # b 2 # c 3
迭代字符串blog
因爲字符串也是可迭代對象,所以,也能夠做用於for循環索引
for ch in 'ABC': print(ch) #輸出:A # B # C
判斷是否迭代字符串
經過collections模塊的Iterable類型判斷對象是不是迭代對象,若是是則說明能夠經過for...in進行迭代it
from collections import Iterable
print(isinstance('abc', Iterable)) #輸出:True,str是否可迭代 print(isinstance([1,2,3], Iterable)) #輸出:True,list是否可迭代 print(isinstance(123, Iterable)) #輸出:False,整數是否可迭代
輸出下標並迭代io
Python內置的enumerate函數可把list變成索引-元素對,這樣就能夠在for循環中同時迭代索引和元素自己for循環
for i, value in enumerate(['A', 'B', 'C']): #for循環裏,同時引用了兩個變量,在Python裏是很常見的 print(i, value) #輸出:0 A # 1 B # 2 C