python - 二进制列表通过了解其在 python 中的长度来包含所有可能的选项

标签 python

我试图通过提供这些可能列表的长度来获得一个包含所有可能性的二进制列表,现在我找到了一个解决方案,但在其他函数中使用它不是很方便。

示例:我想要一个列表列表,每个列表代表一个四位数的二进制选项。

如果长度为 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]]

我所做的是通过以下代码:

>>> [[a, b, c, d] for a in [0,1] for b in [0,1] for c in [0,1] for d in [0,1]]

现在,我正在寻找一种方法,通过了解每个成员二进制列表的长度,我们可以生成大列表而无需手动输入 [a, b, c, d],所以如果可以生成按函数列出让我们说 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]]

通过输入 L_set(2) 我们得到:

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

等等。

在花了几个小时后,我觉得在这一点上卡住了,我希望你们中的一些人能提供帮助。

谢谢

最佳答案

看起来像是 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)]

关于python - 二进制列表通过了解其在 python 中的长度来包含所有可能的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17682313/

相关文章:

python - Tensorflow 对象检测后续步骤

python - 找不到部署在docker+nginx+uwsgi下的flask应用程序的模块

python - 在Python OpenCV中将字符串渲染为库属性

python - 无法在 Ubuntu Server 16.04 上安装 Django 2 Beta 1

python - 从python创建mongodb用户

python - 如何使用 IP 地址作为神经网络中的特征

python - Altair - 通过 slider 绑定(bind)过滤范围

python - 多次导入一个模块有多安全?

python - 如何使用 fetchmany() 获取下一组结果?

python - 按列对 NumPy 中的数组进行排序