导入模块:
>>> import itertools
>>> dir(itertools) # dir函数获取参数在当前范围的变量、方法、属性,返回列表
['__doc__', '__loader__', '__name__', '__package__', '__spec__', '_grouper', '_tee', '_tee_dataobject', \
'accumulate', 'chain', 'combinations', 'combinations_with_replacement', \
'compress', 'count', 'cycle', 'dropwhile', 'filterfalse', 'groupby', 'islice', \
'permutations', 'product', 'repeat', 'starmap', 'takewhile', 'tee', 'zip_longest']
>>> help(itertools.accumulate) # help函数获取参数的帮助文档字符串信息
几个“无限”迭代器:
itertools.count(i)
>>> n = itertools.count(1) # 从1开始,无限迭代自然数
>>> for i in n:
print(i)
1
2
3
4
...
itertools.cycle(it)
>>> n = itertools.cycle('abc') # 无限循环迭代可迭代对象的元素
>>> for i in n:
print(i)
a
b
c
a
b
c
...
itertools.reeort(x, i)
>>> n = itertools.repeat('x', 3) # 无限(参数2)次重复循环(参数1)
>>> for i in n:
print(i)
x
x
x
迭代器操作函数:
itertools.chain(iter1, iter2)
>>> n = itertools.chain('abc', [1, 2, 3]) # 将一系列iterable对象合并成一个itertor
>>> for i in n:
print(i)
a
b
c
1
2
3
itertools.groupby(it)
>>> n = itertools.groupby('AABBAA') # 将相邻重复元素,划分成组,规则基于默认函数
>>> for key, group in n:
print(key, list(group)) # group 为 itertor
A ['A', 'A']
B ['B', 'B']
A ['A', 'A']
>>> n = itertools.groupby('AaBbB', lambda s: s.upper()) # 分组规则基于匿名函数
>>> for key, group in n:
print(key, group)
A ['A', 'a']
B ['B', 'b', 'B']