我试图通过提供这些可能的列表的长度来获得包含所有可能性的二进制列表,现在我找到了一个解决方案但是在其他功能中使用它并不是很方便.
例如:我想要一个列表列表,每个列表代表一个四位数的二进制选项.
如果长度为4,则结果应如下.
[[0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 1, 1], [0, 1, 0, 0], [0, 1, 0, 1], [0, 1, 1, 0], [0, 1, 1, 1], [1, 0, 0, 0], [1, 0, 0, 1], [1, 0, 1, 0], [1, 0, 1, 1], [1, 1, 0, 0], [1, 1, 0, 1], [1, 1, 1, 0], [1, 1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)
我所做的是通过以下代码:
>>> [[a, b, c, d] for a in [0,1] for b in [0,1] for c in [0,1] for d in [0,1]]
Run Code Online (Sandbox Code Playgroud)
现在,我正在寻找一种方法,通过知道每个成员二进制列表的长度,我们可以生成大列表,而无需手动键入[a,b,c,d],所以如果可以通过a生成列表函数让我们说L_set(4)我们得到上面的列表.如果我们输入L_set(3),我们得到以下内容:
[[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)
通过输入L_set(2),我们得到:
[[0, 0], [0, 1], [1, 0], [1, 1]]
Run Code Online (Sandbox Code Playgroud)
等等.
花了几个小时后,我觉得在这一点上陷入困境,我希望你们中的一些人可以提供帮助.
谢谢
看起来像是一份工作itertools.product:
>>> import itertools
>>> n = 4
>>> list(itertools.product((0,1), repeat=n))
[(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 1), (0, 1, 0, 0), (0, 1, 0, 1), (0, 1, 1, 0), (0, 1, 1, 1), (1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)]
Run Code Online (Sandbox Code Playgroud)