您的位置:首页 > 编程语言 > Python开发

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

2015-01-12 15:05 531 查看
这篇文章将对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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: