排列组合

排列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这样的,这个方法会有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值