大家好,本章给大家带来一个非常有用的东西,排列组合。话不多说,直接进入正题。
1. itertools.permutations(self,iterable,r)
纯排列A,相当于无放回地抽取,数学中的。
self:类的返回函数,不用管
iterable:需要迭代的对象,为一个列表
r:排列数(几个数排一起)
import itertools
ls = [3,5,8]
d = itertools.permutations(ls,r=3)
for i in d:
print(i)
2. itertools.product(__iter,r)
可以重复的排列,相当于有放回地抽取,数量为3X3X3=27。
import itertools
ls = [3,5,8]
d = list(itertools.product(ls,repeat=3))
print(len(d))
for i in d:
print(i)
3. itertools.combinations(__iter,r)
纯组合C,相当于无放回,数学中的。
import itertools
ls = [3,5,8]
d = list(itertools.combinations(ls,r=2))
print(len(d))
for i in d:
print(i)
4. itertools.combinations_with_replacement(__iter,r)
可以重复的组合,相当于有放回地抽取,组合是不分位置的,所以要在3X3的基础上剔除重复的。
import itertools
ls = [3,5,8]
d = list(itertools.combinations_with_replacement(ls,r=2))
print(len(d))
for i in d:
print(i)
结尾
用的最多的是第1和第3,纯排列和组合。如果想要r=2和r=3的结果,只需来个循环遍历,把值赋给r就行。