当前位置: 首页 > 后端技术 > Python

【Python进阶】Itertools

时间:2023-03-26 13:40:08 Python

前言Itertools模块提供了一系列的迭代器操作函数,可以让你的代码简洁、高效、Python化。这篇文章是https://docs.python.org/zh-cn的阅读笔记...官方文档写的很好,就是排版实在不习惯,搬砖补充一下我自己对它的理解。在本说明中。注:1、说明中的“XX设备”为随机取名,加强记忆2、懒得看说明的可以直接看例子:)无限迭代器函数说明实参结果示例count()stepper-创建一个迭代器,它从起始值开始并返回统一步长的值start,[step]start,start+step,start+2*step,....count(10)=>1011121314...cycle()Cycler-创建一个迭代器,循环遍历可迭代对象中的所有元素并保存副本pp0,p1,p2,....plast,p0,p1,p0cycle('ABCD')=>ABCDABCD...repeat()-创建一个迭代器,返回n次传递的对象objectelem,[,n]elem,elem,repeatsntimesrepeat(10,3)=>101010...迭代器以最短输入序列函数描述参数结果示例accumulate()Accumulator-创建一个迭代器,返回其他双眼算术函数的求和值或累加结果值ns(由可选的func参数指定)p[,func]p0,p0+p1,p0+p1+p2,...accumulate([1,2,3,4,5])=>1361015chain()connector-创建一个迭代器,连接两个迭代器的元素并返回p,q,...p0,p1,...plast,q0,q1,...chain('ABC','DEF')=>ABCDEFchain.from_iterable()连接器-创建一个迭代器,连接迭代器元素并逐个返回可迭代p0,p1,...plast,q0,q1,...chain.from_iterable(['ABC','DEF'])=>ABCDEFcompress()对比过滤器-创建一个迭代器,它返回数据中的元素,其选择器真值测试为True数据,selectors(d[0]ifs[0]),(d[1]ifs[1]),...压缩('ABCDEF',[1,0,1,0,1,1])=>ACEFdropwhile()TruthTruncator-创建一个迭代器,如果谓词为真则丢弃元素并返回其余元素pred,seqseq[n],seq[n+1],...dropwhile(lambdax:x<5,[1,4,6,4,1])=>6来自pred41filterfalse()条件过滤器的第一个真值测试失败-创建一个迭代器,只返回iterable中predicate为False的元素pred,seqseq中pred(x)为假值的元素,x为seq中的元素filterfalse(lambdax:x%2,range(10))=>02468groupby()grouper-创建一个迭代器,返回可迭代对象中连续的键和组iterable[,key]一个根据key(v)值分组的迭代器[kfork,gingroupby('AAAABBBCCDAABBB')]=>ABCDABislice()切片器-创建一个迭代器,返回从iterableseq,[start,]stop[,step]seq[start:stop:step]elementinislice('ABCDEFG',2,None)=>CDEFGstarmap()函数执行器-创建一个使用从可迭代对象中获取的参数计算函数的迭代器。func,seqfunc(seq[0]),func(seq[1]),...starmap(pow,[(2,5),(3,2),(10,3)])=>3291000takewhile()falsevaluetruncater-创建一个迭代器,只要谓词为真,seqseq[0]、seq[1]、...,就会返回可迭代pred中的元素,直到pred未能通过真值测试takewhile(lambdax:x<5,[1,4,6,4,1])=>14tee()解包器-从可迭代对象中返回n个单独的迭代器。it,nit1,it2,...itn将迭代器拆分为n个迭代器zip_longest()对应于combiner-创建一个迭代器,从每个可迭代对象(p[0],q[0])中收集元素p,q,...,(p[1],q[1]),...zip_longest('ABCD','xy',fillvalue='-')=>Ax通过C-D-组合迭代器函数说明实参结果示例product()Cartesianproductgenerator——返回笛卡尔积p,q,...[repeat=1]inputiterable的笛卡尔积,相当于嵌套forLoopproduct('ABCD','xy')-->AxAyBxByCxCyDxDypermutations()元素排列器——连续返回一个长度为r的数组p[,r],由可迭代元素生成,所有可能的排列,无重复元素permutations('ABCD',2)=>ABACADBABCBDCACBCDDADBDCcombinations()元素组合器-返回长度为r的组合p,该组合由输入可迭代、r长度r元组中的元素生成,有序,无重复元素combinations('ABCD',2)=>ABACADBCBDCD组合ions_with_replacement()elementcombinator-返回从输入iterable中的元素生成的长度r的组合,允许每个元素可以重复出现。p,r长度r元组,有序,元素可重复combinations_with_replacement('ABC',2)=>AAABACBBBCCC参考https://docs.python.org/zh-cn...