itertools

作者 新城 日期 2017-09-01
itertools

itertools

Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。

首先,我们看看itertools提供的几个“无限”迭代器:

1
2
3
4
import itertools
natuals = itertools.count(1)
for n in natuals:
print(n) #无限循环 输出1234.。。。

cycle()会把传入的一个序列无限重复下去:

1
2
3
4
import itertools
cs = itertools.cycle('ABC') # 注意字符串也是序列的一种
for c in cs:
print(c) #输出ABC。。。。

repeat()负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数

1
2
3
ns = itertools.repeat('A', 3)
for n in ns:
print(n) #重复调用3次

迭代对象 无限进行下去 通过takewhile()条件判断 进行截取

1
2
3
natuals = itertools.count(1)
ns = itertools.takewhile(lambda x: x <= 10, natuals)
list(ns) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

chain()

chain()可以将一组迭代对象串联起来 形成更大的迭代器

1
2
3
>>> for c in itertools.chain('ABC', 'XYZ'):
... print(c)
# 迭代效果:'A' 'B' 'C' 'X' 'Y' 'Z'