排列组合
程序员文章站
2022-07-11 09:10:46
...
排列A(5,2)=5 * 4=20
有序的排列:1,2和2,1是两个排列
组合C(5,2)=(5 * 4) / (2 * 1 )=10
无序的排列:1,2和2,1是算一个
import itertools
创建高效迭代器的Python模块
from itertools import combinations
导入组合C
from itertools import permutations
导入排列A
a = list(combinations(range(1,11),5))
#生成列表,从1-10取5个号码按组合C生成
b = list(permutations(range(1,6),2))
#生成列表,从1-5取2个号码按排列A生成
for c in itertools.product(a,b):
print©
两个列表的笛卡尔积
print('',join(c),end=' ')
#print(’’,join©)这个语句可以让结果直接排列到一起 (该语句好像只能在str类型中使用)
#end=’ '可以让默认的输出后换行变成一个空格
for i in itertools.combinations_with_replacement(range(1,6),2):
print (’’.join(i),end=’ ')
会类型错误,如果 range(6) 改成 str(range(6))就可以,但是会把range(6)当字符串拆分组合
该itertools.combinations_with_replacement()方法也是一种组合,它可以自身重复(全组合),但也是无序的,
#比组合C多了一些组合:比如C组合不会出现1,1和2,2这样的,这个方法会有
上一篇: 排列组合问题
下一篇: 网站11个月到权重4的白帽seo之路