Python返回一个列表的组合列表序列
问题描述:
我有以下列表中的Python,其中包括0。Python返回一个列表的组合列表序列
lst = [0,0,0,0,0]
我想创建一个列表,其中包含1和0的不同组合列表。每个列表将是一个新的和独特的组合,并且可以在其中找到所有可能的组合。它看起来有点像这样,如果它只有3项:
lst = [[0,0,0], [0,0,1], [0,1,0], [1,0,0], [0,1,1], [1,1,0], [1,0,1], [1,1,1]]
谢谢!
答
可以使用itertools
包,它包含了product
功能
from itertools import product
list(product([0,1],repeat=5))
看到https://docs.python.org/3/library/itertools.html#itertools.product
编辑:注意正确使用的一些功能,从这个包应该给你的预期输出没有做循环。正如其他人所说,很难知道你想要什么刚好。没有导入包
答
我不确定你想要什么,但以下看起来像你的需要。
import numpy as np
lst = [0,0,0,0,0]
tmp = []
for i in range(len(lst)):
l = np.copy(lst)
l[i] = 1
tmp.append(l.tolist())
print(tmp)
[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]]
答
三位组合:
lst = []
z = [lst.append(list(format(i,'03b'))) for i in range(0,2**3)]
lst
[['0', '0', '0'], ['0', '0', '1'], ['0', '1', '0'], ['0', '1', '1'], ['1', '0', '0'], ['1', '0', '1'], ['1', '1', '0'], ['1', '1', '1']]
为4个位宽,变 '03B' 到 '04B' 和范围(0,2 ** 4)
你有一个[例如](https://stackoverflow.com/help/mcve)你做了什么,并解释什么是不工作? –
给出一个以[0,0,0]开始并详细说明每一个输出的例子,否则没有人可以知道你想要什么。 –