欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

排列组合

程序员文章站 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这样的,这个方法会有

相关标签: python