排列组合 itertools

排列组合函数

itertools模块下提供了一些用于生成排列组合的工具函数。

  • itertools.product(p, q, … [repeat=1]):用序列p、q、…序列中的元素进行排列(元素会重复)。返回p、q中的元素的笛卡尔积的元组
  • itertools.product(sequence,repeat=n) #从sequence中拿n次每次1个数做排列,有放回的拿出, repeat=n与sequence的长度无关。
import itertools
for e in itertools.product('AB', 'CD'):
    print(''.join(e), end=', ')
print()
for e in itertools.product('AB', 'CD',repeat=2):
    print(''.join(e), end=', ')
print()
for i in itertools.product([1,2],repeat= 3):
	print(i)

输出

AC, AD, BC, BD, 
ACAC, ACAD, ACBC, ACBD, ADAC, ADAD, ADBC, ADBD, BCAC, BCAD, BCBC, BCBD, BDAC, BDAD, BDBC, BDBD,
(1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 2, 2)
(2, 1, 1)
(2, 1, 2)
(2, 2, 1)
(2, 2, 2)
  • itertools.permutations(sequence,n) # 从sequence中一次性拿出n个数做排列,n 只能小于等于sequence的长度 否则没有输出。
  • 若n == len(sequence),n 可以省略
import itertools
for e in itertools.permutations('ABCD', 2):
     print(''.join(e), end=", ")

输出

AB, AC, AD, BA, BC, BD, CA, CB, CD, DA, DB, DC, 
  • itertools.combinations(sequence, n ) # 从sequence中一次性拿出n个数做组合,当n大于sequence的长度自然没有数据。
import itertools
for e in itertools.combinations('ABCD', 2):
    print(''.join(e), end=', ')

输出

AB, AC, AD, BC, BD, CD, 
  • itertools.combinations_with_replacement(sequence, n ) # 从sequence中拿n次每次1个数做组合,有放回的拿出, repeat与sequence的长度无关。
import itertools
for i in itertools.combinations_with_replacement([1,2],4):
     print(i)

输出

(1, 1, 1, 1)
(1, 1, 1, 2)
(1, 1, 2, 2)
(1, 2, 2, 2)
(2, 2, 2, 2)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值