首页 > 代码库 > python高级编程-Part2 高效的迭代器模块itertools

python高级编程-Part2 高效的迭代器模块itertools

    这篇文章将对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发布了。技术分享


本文出自 “无名” 博客,请务必保留此出处http://xdzw608.blog.51cto.com/4812210/1602488

python高级编程-Part2 高效的迭代器模块itertools