python語言的for循環(huán)抽象程度很高,只要是可迭代的對(duì)象就可以使用for循環(huán)。
判斷一個(gè)對(duì)象是可迭代對(duì)象,使用collections模塊的Iterable類型來判斷。
>>>from collections import Iterable
>>>isinstance('abc', Iterable)# str是否可迭代
True
>>>isinstance([1,2,3], Iterable)# list是否可迭代
True
>>>isinstance(123, Iterable)# 整數(shù)是否可迭代
False
對(duì)一個(gè)字典進(jìn)行遍歷,一般情況下默認(rèn)都是遍歷dict的key值,遍歷的結(jié)果順序很可能不一樣,因?yàn)樵赿ict中是沒有順序的。
>>>d = {'a':1,'b':2,'c':3}
>>>for key in d:
...print key
...
a
c
b
如果要迭代value,可以用for value in d.itervalues(),如果要同時(shí)迭代key和value,可以用for k, v in d.iteritems()。
如果要對(duì)list實(shí)現(xiàn)類似Java那樣的下標(biāo)循環(huán)怎么辦?Python內(nèi)置的enumerate函數(shù)可以把一個(gè)list變成索引-元素對(duì),這樣就可以在for循環(huán)中同時(shí)迭代索引和元素本身:
>>>for i, value in enumerate(['A','B','C']):
...print i, value
...
0 A
1 B
2 C