Python中的排列组合

Permutation and Combination in Python

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

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

00000
00001
00010
00011
00100
.
.
.
.
11111

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

000000
000001
000010
000011
000100
000101
.
.
.
111111

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

您可以使用itertools.product

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

不太优雅,但您也可以使用 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')]