python itertools.product,Python itertool
Python学习笔记组合permationProduct
结合
创建combinations(iterable, r)迭代器,返回iterable中所有长度为r的子序列。返回的子序列中的项目按照iterable: sort中输入的顺序排序
http://www。Sina.com/:http://www.Sina.com/
返回长度为r的子序列,由输入iterable中的元素组成。
组合元组根据输入的可迭代顺序按字典顺序发布。因此,如果输入iterable是解释,那么在排序后的itertools.combinations(iterable, r)中也会生成绑定元组。
即使元素的值是相同的,元素也被认为在不同的位置是不同的。如果元素不同,则每个组合中没有重复的元素。已排序
顺序
频差组合(iterable,r): # combination (ABCD ,2 ) - abacadbcbdcd #组合range (range )4),3-012013023123 pool=tuple(iterable)n=len(pool)ifrn:return indexes=list(range(r)yield tuple)pool=in-r:break else:return indexes[I]=1 forjinrange(i1,r):indexes(j)=indexes(j-1)1 yield tuple)
defcombinations(iterable,r):pool=tuple)n=len(pool)for indicesinpermutations(range)n),r)3:if sortior
返回由连续可迭代元素生成的长度为r的数组。
如果没有指定r或者没有指定,默认情况下,r被设置为iterable的长度。在这种情况下,将生成所有全长数组。
元组根据输入的可迭代顺序按字典顺序发布。因此,如果输入iterable被排序,那么连接元组也将按照排序后的顺序生成。
即使元素的值是相同的,元素也被认为在不同的位置是不同的。如果元素的值不同,则每个数组中元素的值不会重复。
相当于排列组合枚举所有情况
defpermutations(iterable,r=None ) :#permutations ) ABCD ,2-abACadbaBCBDcaCBCDdadbDC # permutations-012021102120201210 pool=tuple(iterable)n=len)pool r=nifrisnone eelserifrn:return indexes=listes-1)yin indexes[:r])whilen:foriin reversed(range(r)):cycles[I]-=1if=indexes[I:I1]cycles[I]=
可互换,r=none):pool=tuple)iterable)n=len)pool)r=nifrisoneelsforindecsinproduct repeat=r(:iflen(set)
迭代对象输入的笛卡尔乘积。
源码:环。例如,A中x的乘积(A,B)和B)中y的乘积(x,y)返回相同的结果。
嵌套类似里程表,编号为注意。每次迭代向后重复最右边的元素。这种模式形成了字典顺序。因此,如果对输入的可迭代对象进行排序,笛卡尔乘积元组将按顺序提交。
要计算可重复对象本身的combinations,请将可选参数repeat设置为permutations。例如,产品(a,repeat=4)和产品(a,a,a)是相同的。
这个函数几乎等同于下面的代码,但是实际实现不会在内存中创建中间结果:
defproduct(*args,repeat=1) :#product ) ABCD , xy )-axaybxbybxcydxdy # product)range)2,repeat=3-0000100110010110111 pools=[tuple(pool)for poolinargs]* repeat result=[]for polin pools 3360 fool
官方API文档
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。