itertools迭代器 | 阿小信的博客
阿小信大人的头像
Where there is a Python, there is a way. 阿小信大人

itertools迭代器2014-09-02 04:32

>>> from itertools import *
>>> c=chain([1,2,3],[4,5,6])
>>> c
<itertools.chain object at 0x01B37A50>
>>> for i in c:print i
...
1
2
3
4
5
6
>>> #chain将一组迭代器链接起来形成一个新的迭代器,第一个迭代器用完则从第二个迭代器再生成,直到用完。
...
>>> for i in combinations([1,2,3,4], 2):print i
...
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)
>>> #combinations创建一个迭代器,返回所有长度为第二个参数的子序列。
...

count([n])创建一个迭代器,生成从n开始的连续整数,忽略n则从0开始,一直生成下去,如果超过sys.maxint,计数器将会溢出,并继续从-sys.maxint - 1开始计算。cycle(iterable)对iterable中的元素进行反复循环。

>>> sys.maxint
2147483647
>>> -sys.maxint - 1
-2147483648
>>>

dropwhile(func,iter)创建一个迭代器,只要函数func(item)返回True就丢弃iter中的项,返回False就会生成iter中的项和后续项。

>>> for i in dropwhile(sum, [[0],[1]]):print i
...
[0]
[1]
>>> for i in dropwhile(sum, [[2],[1]]):print i
...
>>>

groupby(iter [, key])对iter生成的连续项进行分组,分组过程中会检查重复项,在多次连续迭代中生成同一项则会定义一个组,key是一个函数,应用于每一项。

>>> for i in groupby([1,1,2,3,0,0]):print i
...
(1, <itertools._grouper object at 0x01B37A90>)
(2, <itertools._grouper object at 0x01B37CB0>)
(3, <itertools._grouper object at 0x01B37A90>)
(0, <itertools._grouper object at 0x01B37CB0>)
>>>
>>> [i for i,j in groupby([1,2,2,4,6,3,4,5,1,1,5,6,7,8,8,9,0,0])]
[1, 2, 4, 6, 3, 4, 5, 1, 5, 6, 7, 8, 9, 0]
>>> [i for i,j in groupby([1,1,1,2,2,3,4,4,5,5,6,6,7,8,8,9,0,0])]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> [i for i,j in groupby([1,1,1,6,6,7,8,8,9,0,0,2,2,1,3,3,3,4,4,5,5,7,7],str)]
['1', '6', '7', '8', '9', '0', '2', '1', '3', '4', '5', '7']

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Python#  
分享到:
阅读[1153] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

网友54.*.*.22[火星]2018-08-21 08:25
网友46.*.*.67[Ashburn]2018-08-21 08:11
网友46.*.*.83[火星]2018-08-21 07:59
网友46.*.*.69[Ashburn]2018-08-21 07:50

发表评论