gpt4 book ai didi

python - 在 python 中生成唯一的二进制排列

转载 作者:太空狗 更新时间:2023-10-29 17:45:12 24 4
gpt4 key购买 nike

请问,我怎样才能得到所有这些二进制排列,而不在 Python 中重复?

 a = list(itertools.permutations([1, 1, 0, 0]))
for i in range(len(a)):
print a[i]

(1, 1, 0, 0)
(1, 1, 0, 0)
(1, 0, 1, 0)
...

如果它能大致有效,那就太好了,因为我必须用这样一个甚至包含 30 个元素的列表来做到这一点。

最佳答案

正如@Antti 在评论中所说,这相当于寻找输入列表位置的组合,这些位置确定输出中的哪些位为 1。

from itertools import combinations

def binary_permutations(lst):
for comb in combinations(range(len(lst)), lst.count(1)):
result = [0] * len(lst)
for i in comb:
result[i] = 1
yield result

for perm in binary_permutations([1, 1, 0, 0]):
print(perm)

输出:

[1, 1, 0, 0]
[1, 0, 1, 0]
[1, 0, 0, 1]
[0, 1, 1, 0]
[0, 1, 0, 1]
[0, 0, 1, 1]

关于python - 在 python 中生成唯一的二进制排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50592576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com