这篇文章将对python内置的迭代器模块做个简单的介绍。
我们已经了解到,可迭代对象和迭代器的关系。这里不妨总结一次,以期待听到不一样的声音,
纯属探讨。可迭代对象是指具有迭代特质的一种类型,而迭代是迭代器提供的一种功能,即每次返回一个元素并且依次返回元素的能力。比如列表或元组就是一个可迭代对象。而可迭代对象经过内置iter方法处理后就会得到迭代器对象:
In [8]: iList = iter([1,2,3]) In [9]: type(iList) Out[9]: listiterator In [10]: iList.next() Out[10]: 1 In [11]: iList.__iter__() Out[11]: <listiterator at 0x3753550>
上面的内容,有助于理解本篇的主题--python内置的高效迭代器模块itertools
islice:窗口迭代器
itertools.islice(iterable, start, stop, step)将返回建立在子(可迭代)序列上的迭代器。
In [1]: L = [1,2,3,4,5] In [2]: import itertools In [3]: iter1 = itertools.islice(L, 1, 5, 2) #在列表L的位置1(含位置1)到位置5(不含位置5)的 #区间中以步进2选取元素构成可迭代对象(即使仅有 #一个元素),生成对应的迭代器 In [4]: iter1 Out[4]: <itertools.islice at 0x36967c8> .. In [6]: for x in iter1: ...: print x ...: 2 4
tee:往返式迭代器
itertools.tee(iterable)返回两个独立的建立于同一个可迭代对象之上的迭代器。
In [1]: L = [1,2,3,4,5] In [2]: from itertools import tee In [3]: a,b = tee(L) In [4]: a,b Out[4]: (<itertools.tee at 0x36afd88>, <itertools.tee at 0x36afdc8>) In [5]: a.next() Out[5]: 1 In [6]: a.next() Out[6]: 2 In [7]: b.next() Out[7]: 1
实例都在讲述模块的功能,并未展示用途,还请各位如果用到这个模块的话,不吝留下您的需求描述。
不再赘述其他的了,python文档都有介绍实例,这个专题有点水分啦..
推荐参考:
https://docs.python.org/2.7/library/itertools.html
刚刚发现,python 2.7.9发布了。