Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。
import itertools
natuals = itertools.count(1)
for n in natuals:
print n
...
1
2
3
...
import itertools
cs = itertools.cycle('ABC') # 注意字符串也是序列的一种
for c in cs:
... print c
...
'A'
'B'
'C'
'A'
'B'
'C'
...
ns = itertools.repeat('A', 10)
for n in ns:
... print n
...
打印10次'A'
natuals = itertools.count(1)
ns = itertools.takewhile(lambda x: x <= 10, natuals)
for n in ns:
... print n
...
打印出1到10
以上来自廖雪峰网站
chain()可以把一组迭代对象串联起来,形成一个更大的迭代器:
这个方法自己平时用的比较多,下面讲一下关于chain的实例
for c in itertools.chain('ABC', 'XYZ'):
print c
# 迭代效果:'A' 'B' 'C' 'X' 'Y' 'Z
import itertools
first=[['1','2','3','4','4'],['2','4','2']]
print(*first)
x=['abc','def']
print(*x)
for i in itertools.chain(*first):
print(i)
输出为
['1', '2', '3', '4', '4'] ['2', '4', '2'] =>这里是两个元素
abc def =>这里是两个元素
1
2
3
4
4
2
4
2
用*
放在一个可迭代对象前面可以将对象拆分成多个单元素,比如first=[['1','2','3','4','4'],['2','4','2']]
,如果把*
放在first前面,就会拆成['1','2','3','4','4']
和['2','4','2']
这两个元素,然后在使用chain方法进行迭代
from itertools import chain
s1=['i','l','o','v','e']
s2=['y','o','u']
s=[s1,s2]
all_letters=chain(*s)
print(all_letters,type(all_letters))
print(list(all_letters))
输出为
['i', 'l', 'o', 'v', 'e', 'y', 'o', 'u']