本文仅供个人记录和复习,不用于其他用途
传统迭代
说得简单点就是使用循环,不管你是用for还是用while。Python中是使用for in
来实现迭代,而其他语言比如C++,是使用下标来完成的:
|
|
不过呢,Python的迭代要更加强大一点,因为迭代不一定要用于list或者tuple,还可以用在其他的对象上。
虽然说list有下标,但是哪怕是没有下标的对象,比如说dict,也是可以使用迭代的:
>>> dic = {'a': 1, 'b': 2, 'c': 3}
>>> for key in dic:
... print key
...
a
c
b
因为dict并不是按照顺序存储,所以读出来的顺序可能不一样。一般来说,list按照key来进行迭代,如果要迭代的是value,那么可以使用for value in dic.itervalues()
。如果同时迭代key和value,那么可以用for k, v in d.iteritems()
。
另外,字符串也可以使用for循环:
>>> for ch in 'abc':
... print ch
...
a
b
c
那么,哪些是可迭代对象呢?我们可以通过collections
的Iterable
进行判断:
>>> from collections import Iterable
>>> isinstance('abc', Iterable)
True
>>> isinstance([1, 2, 3], Iterable)
True
>>> isinstance(123, Iterable)
False
当然,如果你一定要下标迭代,那么可以使用enumerate
函数,它可以把一个list转变成索引+元素的类型,那么这样就可以使用下标迭代:
>>> for i, value in enumerate(['a', 'b', 'c']):
... print i, value
...
0 a
1 b
2 c
这样一来,就可以同时迭代索引和元素本身。
当然,如果我们不需要下标,我们同样可以使用两个变量来迭代,比如:
>>> for x, y in [(1, 2), (3, 4), (5, 6)]:
... print x, y
...
1 2
3 4
5 6
如果list中的元素时tuple,那么我们就可以使用两个变量来获取每个元素。