itertools用于高效循环的迭代函数集合
无限迭代器
itertools.count(start=0, step=1)
创建一个迭代器,生成从n开始的连续整数,如果忽略n,则从0开始计算(注意:此迭代器不支持长整数)
如果超出了sys.maxint,计数器将溢出并继续从-sys.maxint-1开始计算
from itertools import *
for i in zip(count(1), ['a', 'b', 'c']):
print(i)
(1, 'a')
(2, 'b')
(3, 'c')
itertools.repeat(object[, times])
创建一个迭代器,重复生成object,times(如果已提供)指定重复计数,如果未提供times,将无止尽返回该对象。
from itertools import *
for i in repeat('over-and-over', 5):
print (i)
over-and-over
over-and-over
over-and-over
over-and-over
over-and-over
itertools.cycle(iterable)
创建一个迭代器,对iterable中的元素反复执行循环操作,内部会生成iterable中的元素的一个副本,此副本用于返回循环中的重复项。
cycle(“abc”) #重复序列的元素,既a, b, c, a, b, c …
使用for或者next()调用里面的元素。
处理输入序列迭代器
itertools.imap(function, *iterables)
创建一个迭代器,生成项function(i1, i2, …, iN),其中i1,i2…iN分别来自迭代器iter1,iter2 … iterN,如果function为None,则返回(i1, i2, …, iN)形式的元组,只要提供的一个迭代器不再生成值,迭代就会停止。
即:返回一个迭代器, 它是调用了一个其值在输入迭代器上的函数, 返回结果. 它类似于内置函数 map() , 只是前者在任意输入迭代器结束后就停止(而不是插入None值来补全所有的输入).
返回序列每个元素被func执行后返回值的序列的迭代器