在 python 中找到二进制排列

find binary permutations in python

我正在寻找一种方法来查找 x 数量为“1”的所有二进制排列。 例如:

(长度=2) x = 1(因此:找到长度为 2 且其中有一个 1 的 1 和 0 的所有排列)

l = ['01', '10']

x = 2(所以:找到长度为 2 且其中有两个 1 的 1 和 0 的所有排列)

l = ['11']

到目前为止,我有这个可以计算所有可能的排列,但我不确定如何通过'1'来'filter'它们(例如,尤其是当大小为 7 时)

pre = list(map(''.join, itertools.product('01',repeat=2)))

我正在寻找一些东西 faster/better 而不是我的 for 循环,它计数为“1”。

试试这个:

l=7
x=6
set(itertools.permutations([1]*x + [0]*(l-x)))

结果:

{(0, 1, 1, 1, 1, 1, 1),
 (1, 0, 1, 1, 1, 1, 1),
 (1, 1, 0, 1, 1, 1, 1),
 (1, 1, 1, 0, 1, 1, 1),
 (1, 1, 1, 1, 0, 1, 1),
 (1, 1, 1, 1, 1, 0, 1),
 (1, 1, 1, 1, 1, 1, 0)}