python - 生成所有长度为 n 的 True/False 排列?

标签 python boolean permutation

这个问题是在尝试为真值表生成函数编写代码时出现的。

如何生成 True 和 False 的所有长度 n 排列的列表?换句话说,给定一个元素列表 [True, False],我如何生成这些元素所有可能的长度 n 组合的所有排列?

例如:

n=2 长度为 2 的排列是:

[[True, True], [True, False], [False, True], [False, False]]

n=3 长度为 3 的排列是:

[[False, False, False],[False,False,True],
[False,True,False],[False,True,True],
[True,False,False],[True,False,True],[True,True,False],[True,True,True]]

我知道这个列表中有 2^n 个列表。我也考虑过使用 itertools.product,但这似乎只能提供特定组合的排列。在这种情况下,我想我想生成长度为 n 的 true/false 列表的所有组合的排列。

最佳答案

使用itertools.product:

>>> import itertools
>>> l = [False, True]
>>> list(itertools.product(l, repeat=3))
[(False, False, False), (False, False, True), (False, True, False), (False, True, True), (True, False, False), (True, False, True), (True, True, False), (True, True, True)]
>>> 

如果您想将列表中的元组更改为子列表,请尝试列表理解:

>>> import itertools
>>> l = [False, True]
>>> [list(i) for i in itertools.product(l, repeat=3)]
[[False, False, False], [False, False, True], [False, True, False], [False, True, True], [True, False, False], [True, False, True], [True, True, False], [True, True, True]]
>>> 

关于python - 生成所有长度为 n 的 True/False 排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54059917/

相关文章:

python - Python 正则表达式中的控制代码

c# - "Use of unassigned local variable"错误的原因是什么?

python - 如何从 Python 中的字符串列表创建所有可能的长度为 100 个字符的句子

python - 独特的排列发生器?

python - 如何从 Counter 的值构建直方图?

python - 如何从 PyParsing 中的结果对象中检索值列表?

从非返回函数打印 Python

Java boolean if 语句困惑

R:是否可以在部分重复行的多个选择列中组合 boolean 数据?

algorithm - 这个算法会被认为是最小变化算法吗?