itertools模块是python的一个内置模块,它提供了非常有用的用于操作迭代对象的函数。
1. itertools.cycle():它可以将传入的序列无限循环下去
>>> x=itertools.cycle('123')
>>> for i in x:
print(i)
输出结果
‘1’
‘2’
‘3’
‘1’
‘2’
…………
2. itertools.repeat(seq,times):它在cycle的基础上可以限定循环次数
.
.
3. itertools.count():它会创造一个无限迭代器,可以进行无限迭代,但迭代对象需要是个数字
>>> import itertools
>>> natuals = itertools.count(1)
>>> for n in natuals:
print n
输出结果
1
2
3
…………
有时为了截取一定数量的迭代片段,还可以使用itertools.takewhile()等函数进行判断
>>> natuals = itertools.count(1)
>>> ns = itertools.takewhile(lambda x: x <= 10, natuals)
>>> for n in ns:
... print n
...
打印出1到10
4. itertools.chain():它可以把一组迭代对象串联起来,形成一个更大的迭代器
>>> k=itertools.chain('abc','mnb')
>>> for i in k:
print(i)
输出结果
a
b
c
m
n
b
5. itertools.groupby():它可以挑出函数中相邻并且重复的元素
m=itertools.groupby('aaaaabbbbbccccc')
>>> for i,l in m:
print(i,list(l))
输出结果
a ['a', 'a', 'a', 'a', 'a']
b ['b', 'b', 'b', 'b', 'b']
c ['c', 'c', 'c', 'c', 'c']
注意:此处groupby生成的是一个字符以及其对应的列表
6. itertools.imap():它就是map()的惰性求值的函数
7. itertools.ifilter():类似的,它是filter()的惰性求值函数
这两个尝尝函数用于无限序列