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]] 

谢谢!

+0

你有一个[例如](https://stackoverflow.com/help/mcve)你做了什么,并解释什么是不工作? –

+0

给出一个以[0,0,0]开始并详细说明每一个输出的例子,否则没有人可以知道你想要什么。 –

可以使用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)