Python中的排列和组合

时间:2015-09-12 04:01:20

标签: python sequence permutation itertools

python是否有一些内置函数,通过它我可以生成像这样的序列

对于i = 5,有多少种不同的方式0和1可以占据五个位置,如

00000
00001
00010
00011
00100
.
.
.
.
11111

对于i = 6,0和1可以占用6个位置的方式有多少:

000000
000001
000010
000011
000100
000101
.
.
.
111111

我已经熟悉itertools permutation and combination,但我无法生成这样的序列。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

您可以使用itertools.product

>>>from itertools import product
>>>list(product([0,1],repeat=5))

答案 1 :(得分:1)

不太优雅,但您也可以使用permutations

from itertools import permutations
print sorted(list(set(list(permutations('0000011111', 5)))))

<强>输出

[('0', '0', '0', '0', '0'), ('0', '0', '0', '0', '1'), ('0', '0', '0', '1', '0'), ('0', '0', '0', '1', '1'), ('0', '0', '1', '0', '0'), ('0', '0', '1', '0', '1'), ('0', '0', '1', '1', '0'), ('0', '0', '1', '1', '1'), ('0', '1', '0', '0', '0'), ('0', '1', '0', '0', '1'), ('0', '1', '0', '1', '0'), ('0', '1', '0', '1', '1'), ('0', '1', '1', '0', '0'), ('0', '1', '1', '0', '1'), ('0', '1', '1', '1', '0'), ('0', '1', '1', '1', '1'), ('1', '0', '0', '0', '0'), ('1', '0', '0', '0', '1'), ('1', '0', '0', '1', '0'), ('1', '0', '0', '1', '1'), ('1', '0', '1', '0', '0'), ('1', '0', '1', '0', '1'), ('1', '0', '1', '1', '0'), ('1', '0', '1', '1', '1'), ('1', '1', '0', '0', '0'), ('1', '1', '0', '0', '1'), ('1', '1', '0', '1', '0'), ('1', '1', '0', '1', '1'), ('1', '1', '1', '0', '0'), ('1', '1', '1', '0', '1'), ('1', '1', '1', '1', '0'), ('1', '1', '1', '1', '1')]