在学习for循环语句时,我们已经知道利用for......in 循环语句可以遍历list或tuple中的元素,我们称之为迭代。例如:
>>> L = ['A','B','C']
>>> for x in L:
print(x)
A
B
C
其实不仅仅是list 和tuple可以迭代,dict也可迭代,例如:
>>> d = {'a':1,'b':2,'c':3}
>>> for x in d:
print(x)
a
b
c
另外,由于dict并不是按照顺序排序的,所以迭代出的顺序可能并不一致。默认情况下,迭代dict是dict其key,既上述循环语句等价于 for x in d.keys(), 如下:
>>> for x in d.keys():
print(x)
a
b
c
如果想迭代出dict 中的value值,可使用以下循环语句,如:
>>> for x in d.values():
print(x)
1
2
3
其实任何一个可迭代对象,均可迭代,例如字符串‘ABC’也可迭代,那么我们如何知道一个对象是否可迭代呢?我们可使用collections 中的 Iterable进行类型判断(isinstance为类型判断函数),例如:
>>> from collections import Iterable
>>> isinstance('ABC',Iterable)
True
>>> isinstance([1,2,3],Iterable)
True
>>> isinstance(123,Iterable)
False
另外,若我们想同时迭代出下标与元素,可使用enumerate把迭代对象变成一个索引-元素对,例如:
>>> L = ['A','B','C']
>>> for x,v in enumerate(L):
print(x,v)
0 A
1 B
2 C
可以看到,在上面的for循环中,同时引用了两个变量,其实这在python中非常常见。例如:
>>> for x,y in [(1,1),(2,4),(3,9)]:
print(x,y)
1 1
2 4
3 9
下面,我们利用迭代,查找list中元素的最大最小值,并通过tuple形式返回。
def findMinAndMax(L):
if len(L) <= 1:
print('测试失败')
Max = L[0]
Mix = L[0]
for x in L:
if x > Max:
Max = x
if x < Mix:
Mix = x
print(Max,Mix)