itertools
是 Python 的内置模块,提供了一系列用于创建复杂迭代器的函数。这些复杂迭代器可以用于各种编程任务,如排序、数据处理、组合生成等。
以下是一些常用的 itertools
函数及其使用示例:
count(start, [step])
:创建一个迭代器,生成从 start
开始的连续整数,可选的 step
指定增量。
for i in itertools.count(10, 2):
print(i)
if i > 20:
break
cycle(iterable)
:创建一个迭代器,生成一个无限循环的重复 iterable
中的元素。
for i in itertools.cycle('ABC'):
print(i)
if i == 'C':
break
repeat(object[, times])
:创建一个迭代器,重复生成 object
,可选的 times
参数指定重复次数。
for i in itertools.repeat('A', 5):
print(i)
combinations(iterable, r)
:创建一个迭代器,生成 iterable
中所有长度为 r
的连续组合。
for i in itertools.combinations('ABC', 2):
print(i)
permutations(iterable, r=None)
:创建一个迭代器,生成 iterable
中所有长度为 r
的排列。
for i in itertools.permutations('ABC', 2):
print(i)
groupby(iterable[, key])
:创建一个迭代器,生成从 iterable
中分组的元素。
data = ['foo', 'foo', 'bar', 'bar', 'bar', 'foo', 'foo']
for key, group in itertools.groupby(data):
print(key, list(group))
chain(*iterables)
:创建一个迭代器,顺序地连接多个迭代器。
for i in itertools.chain('ABC', 'DEF'):
print(i)
compress(iterable, selectors)
:创建一个迭代器,生成 iterable
中当 selectors
为 True
时的元素。
for i in itertools.compress('ABC', [True, False, True]):
print(i)
dropwhile(predicate, iterable)
:创建一个迭代器,丢弃 iterable
中 predicate
为 True
的元素。
for i in itertools.dropwhile(lambda x: x<5, [1, 4, 6, 4, 1]):
print(i)
takewhile(predicate, iterable)
:创建一个迭代器,只要 predicate
为 True
就从 iterable
中生成元素。
for i in itertools.takewhile(lambda x: x<5, [1, 4, 6, 4, 1]):
print(i)
这些函数可以用于各种复杂的迭代需求,并提供了一种处理序列数据的创新和高效方式。