在 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)}
我正在寻找一种方法来查找 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)}