itertools提供的函数是受函数式编程语言中类似特性的启发,其目的是保证快速,并且高效的使用内存,而且可以联接在一起表述更为复杂的基于迭代的算法。

与使用列表的算法相比,基于迭代器的算法可以提供更好的内存使用特性。在真正需要数据之前,并不从迭代器生成数据,由于这个原因,不需要将所有数据都同时存储在内存中。这种懒处理模型可以减少内存的使用,相应的可以减少交换以及大数据集的其他副作用,从而改善性能。

合并和分解迭代器

chain()函数取多个迭代器作为参数,最后返回一个迭代器,它能生成所有输入迭代器的内容,就好像这些迭代器来自一个迭代器一样。

1
2
3
4
from itertools improt *
for i in chain([1,2,3],[4,5,6]):
print i,
print

结果将输出1 2 3 4 5 6。利用chain()可以轻松处理多个序列而不必构造一个大的列表。