通过for循环遍历整个list或tuple,这种遍历称为迭代。
Python中除了list和tuple这种有下标索引的可以作为迭代对象,想dict这类无下标,但是是可迭代的对象,都可以迭代:
>>> d = {'a':1,'b':2,'c':3} >>> for k in d: print(k) a b c >>> for v in d.values(): print(v) 1 2 3 >>> for k,v in d.items(): print(k,v) a 1 b 2 c 3
dict默认迭代的是key值,如果要迭代value,可以用for v in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()
>>> for ch in 'ABC': ... print(ch) ... A B C
上面的例子里可以看出,字符串也是可迭代对象,如何判断对象是否是可迭代对象呢?可以通过collections模块的Iterable类型判断:
>>> from collections import Iterable >>> isinstance('abcd',Iterable) True >>> isinstance('123',Iterable) True >>> isinstance((1,2,3),Iterable) True >>> isinstance(123,Iterable) False >>> isinstance('木人张的自留地',Iterable) True
可以看出字符串、tuple都是可迭代对象,但是整数数值不属于可迭代对象。
练习:迭代查找一个list中最大和最小值,并返回成tuple
>>> def findMinAndMax(L): if L == []: return(None,None) else: y = L[0] z = L[0] for x in L: if x>=y: y=x else: pass for s in L: if s<=z: z=s else: pass return(z,y) >>> findMinAndMax([]) (None, None) >>> findMinAndMax([8]) (8, 8) >>> findMinAndMax([1,5,3,8,9,10,2]) (1, 10)