这个模块实现了大量的迭代器构建块,这些构建块受到了来自APL、Haskell和SML的构造的启发。每一个都以适合Python的形式被重铸。
该模块标准化了一组核心的快速、内存效率高的工具,这些工具可以自己使用,也可以组合使用。它们一起形成了一个“迭代器代数”,使得用纯Python简洁高效地构造专门的工具成为可能。
例如,SML提供了一个制表工具:tablate(f),它生成一个序列f(0),f(1)。。。。在Python中,通过将map()和count()组合起来形成map(f,count())也可以达到同样的效果。
这些工具及其内置的对应工具也能很好地与操作员模块中的高速功能配合使用。例如,乘法运算符可以映射到两个向量上,以形成有效的点积:sum(map(operator.mul,vector1,vector2))。
下面的实例演示了itertools的用法
>>> import itertools
>>> for p in itertools.permutations('ABCD'):
... print(p)
('A', 'B', 'C', 'D')
('A', 'B', 'D', 'C')
('A', 'C', 'B', 'D')
('A', 'C', 'D', 'B')
('A', 'D', 'B', 'C')
('A', 'D', 'C', 'B')
('B', 'A', 'C', 'D')
('B', 'A', 'D', 'C')
('B', 'C', 'A', 'D')
('B', 'C', 'D', 'A')
('B', 'D', 'A', 'C')
('B', 'D', 'C', 'A')
('C', 'A', 'B', 'D')
('C', 'A', 'D', 'B')
('C', 'B', 'A', 'D')
('C', 'B', 'D', 'A')
('C', 'D', 'A', 'B')
('C', 'D', 'B', 'A')
('D', 'A', 'B', 'C')
('D', 'A', 'C', 'B')
('D', 'B', 'A', 'C')
('D', 'B', 'C', 'A')
('D', 'C', 'A', 'B')
('D', 'C', 'B', 'A')
关于Itertools的详细说明,参考:https://docs.python.org/3/library/itertools.html