一、Python内置库itertools简介
Python内置库itertools提供了很多方便的迭代器函数,这些函数能够用于高效地组合和操作可迭代对象,使代码更加简洁高效。
itertools模块主要包括以下常用函数:
- count(start=0, step=1):从start开始不停递增step的无限迭代器;
- cycle(iterable):循环返回iterable中的各个元素;
- repeat(obj, times=None):返回obj的times次迭代,如果times为None,则返回无限迭代器;
- chain(*iterables):将多个可迭代对象连接起来,以一个迭代器返回;
- compress(data, selectors):从data中选择由selectors中非零元素对应的元素;
- dropwhile(predicate, iterable):返回从iterable中逐个返回且去掉predicate为True的元素后的元素;
- filterfalse(predicate, iterable):返回iterable中所有predicate为False的元素;
- groupby(iterable, key=None):对iterable中相邻的重复元素进行分组,返回分组后的元组;
- islice(iterable, start, stop[, step]):返回从iterable中的start到stop的slice;
- starmap(function, iterable):对iterable中的每个元素都应用function,返回结果的迭代器;
- takewhile(predicate, iterable):返回从iterable中逐个返回predicate为True的元素的迭代器;
- tee(iterable, n=2):返回n个相同的迭代器,用于多次消费iterable;
- zip_longest(*iterables, fillvalue=None):对iterables中的每个可迭代对象进行平行的迭代,如果某个可迭代对象迭代结束了,则用fillvalue补充缺失的值。
二、示例说明
- 组合生成器
组合是每一个序列中的n个数组合。itertools的combinations函数可以帮助我们实现这个功能。假设我们想要在a,b,c中找到所有的3个字母组合:
import itertools
letters = ['a', 'b', 'c']
combos = []
for L in range(0, len(letters)+1):
for subset in itertools.combinations(letters, L):
combos.append(subset)
print(combos)
输出如下:
[(), ('a',), ('b',), ('c',), ('a', 'b'), ('a', 'c'), ('b', 'c'), ('a', 'b', 'c')]
- 迭代器排列
排列是安排序列中的元素的方式。itertools的permutations函数可以帮助我们实现这个功能。假设我们想要在a,b,c中找到所有的2个字母排列:
import itertools
letters = ['a', 'b', 'c']
combos = []
for subset in itertools.permutations(letters, 2):
combos.append(subset)
print(combos)
输出如下:
[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
以上就是关于Python 内置库itertools的完整攻略以及包含的两条示例说明。希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于Python 内置库 itertools - Python技术站