前言
Python用来处理迭代器的工具你想到了啥?itertools 就是一个特别有用的库,它提供了一系列用于创建和操作迭代器的工具,以下是10个常用的操作,可用在实际工作中,熟练掌握这些操作,将极大提升你在 Python 中的编程效率。
1. 无限计数器: count()
count(start, step)
用于创建一个无限的迭代器,从 start
开始,每次增加 step
。
import itertoolsfor num in itertools.count(10, 2):if num > 20:breakprint(num)
2. 循环迭代: cycle()
cycle(iterable)
会无限重复迭代一个可迭代对象。
counter = 0
for item in itertools.cycle('ABCD'):if counter > 7:breakprint(item)counter += 1
3. 重复元素: repeat()
repeat(object, times)
重复一个对象 times
次。
for item in itertools.repeat('Hello', 3):print(item)
4. 链接迭代器: chain()
chain(*iterables)
用于链接多个迭代器。
for item in itertools.chain([1, 2, 3], ['a', 'b']):print(item)
5. 数据过滤: compress()
compress(data, selectors)
根据 selectors
中的布尔值过滤 data
。
for item in itertools.compress('ABCDE', [1,0,1,0,1]):print(item)
6. 迭代器切片: islice()
islice(iterable, start, stop[, step])
对迭代器进行切片操作。
for item in itertools.islice(range(10), 2, 8, 2):print(item)
7. 笛卡尔积: product()
product(*iterables, repeat=1)
创建一个迭代器,生成输入迭代器的笛卡尔积。
for item in itertools.product('AB', range(2)):print(item)
8. 排列组合: permutations()
permutations(iterable, r=None)
返回可迭代对象的所有长度为 r
的排列。
for item in itertools.permutations('ABC', 2):print(item)
9. 组合生成: combinations()
combinations(iterable, r)
返回可迭代对象的所有长度为 r
的组合。
for item in itertools.combinations('ABC', 2):print(item)
10. 组合生成(允许重复): combinations_with_replacement()
combinations_with_replacement(iterable, r)
类似于 combinations
,但允许元素重复。
for item in itertools.combinations_with_replacement('ABC', 2):print(item)
结语
itertools
库提供了强大而灵活的工具集,用于处理各种迭代任务。无论是简单的数据重复还是复杂的数据组合, itertools
都能轻松应对。