我正在开发一个程序,其中使用
itertools.product()
来查找 n
数量的元组的组合。
例如:
n = int(input())
假设用户输入 3
a = [(True, False), (True, False), (False, True)]
现在我想得到以下输出:
[(True, True, True),
(True, True, False),
(True, False, True),
(True, False, False),
(False, True, True),
(False, True, False),
(False, False, True),
(False, False, False)]
当指定列表中的元组数量时,我可以执行此操作。
产品的工作原理如下:
>>> list(itertools.product([True, False], [True, False]))
[(True, True), (True, False), (False, True), (False, False)]
>>> list(itertools.product([True, False], [True, False], [True, False]))
[(True, True, True),
(True, True, False),
(True, False, True),
(True, False, False),
(False, True, True),
(False, True, False),
(False, False, True),
(False, False, False)]
所以你需要做的是
import itertools
n = int(input())
a = [(True, False) for i in range(n)]
list(itertools.product(*a))
如果要重复单个迭代,可以使用
repeat
的
itertools.product
参数
import itertools
n = int(input())
a = (True, False)
list(itertools.product(a, repeat=n))