[Python]itertools模块

本文详细介绍Python标准库中的itertools模块,该模块提供了多种高效的迭代器工具,包括无限迭代器、终止迭代器及组合生成器等,适用于高效的数据处理场景。

itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用。

注意itertools模块中的函数所创建的都是对象,并且是可迭代对象。

Infinite Iterators:

IteratorArgumentsResultsExample
count()start, [step]start, start+step, start+2*step, ...count(10) --> 10 11 12 13 14 ...
cycle()pp0, p1, ... plast, p0, p1, ...cycle('ABCD') --> A B C D A B C D ...
repeat()elem [,n]elem, elem, elem, ... endlessly or up to n timesrepeat(10, 3) --> 10 10 10

Iterators can be terminated:

IteratorArgumentsResultsExample
chain()p, q, ...p0, p1, ... plast, q0, q1, ...chain('ABC', 'DEF') --> A B C D E F
compress()data, selectors(d[0] if s[0]), (d[1] if s[1]), ...compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F
dropwhile()pred, seqseq[n], seq[n+1], starting when pred failsdropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1
groupby()iterable[, keyfunc]sub-iterators grouped by value of keyfunc(v)
ifilter()pred, seqelements of seq where pred(elem) is Trueifilter(lambda x: x%2, range(10)) --> 1 3 5 7 9
ifilterfalse()pred, seqelements of seq where pred(elem) is Falseifilterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8
islice()seq, [start,] stop [, step]elements from seq[start:stop:step]islice('ABCDEFG', 2, None) --> C D E F G
imap()func, p, q, ...func(p0, q0), func(p1, q1), ...imap(pow, (2,3,10), (5,2,3)) --> 32 9 1000
starmap()func, seqfunc(*seq[0]), func(*seq[1]), ...starmap(pow, [(2,5), (3,2), (10,3)]) --> 32 9 1000
tee()it, nit1, it2 , ... itn splits one iterator into n
takewhile()pred, seqseq[0], seq[1], until pred failstakewhile(lambda x: x<5, [1,4,6,4,1]) --> 1 4
izip()p, q, ...(p[0], q[0]), (p[1], q[1]), ...izip('ABCD', 'xy') --> Ax By
izip_longest()p, q, fillvalue=None(p[0], q[0]), (p[1], q[1]), ...izip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-

Combinatoric generators:

IteratorArgumentsResults
product()p, q, ... [repeat=1]

创建一个迭代器,生成表示p,q等中的项目的笛卡尔积的元组,repeat是一个关键字参数,指定重复生成序列的次数。

permutations()p[, r]r-length tuples, all possible orderings, no repeated elements
combinations()p, rr-length tuples, in sorted order, no repeated elements
combinations_with_replacement()p, rr-length tuples, in sorted order, with repeated elements
product('ABCD', repeat=2)
AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
permutations('ABCD', 2)
AB AC AD BA BC BD CA CB CD DA DB DC
combinations('ABCD', 2)
AB AC AD BC BD CD
combinations_with_replacement('ABCD', 2)
AA AB AC AD BB BC BD CC CD DD

Python的说明文件中有各个函数的详细定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值