如何在未知长度列表中查找元组的 itertools 乘积?

问题描述 投票:0回答:2

我正在开发一个程序,其中使用

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

当指定列表中的元组数量时,我可以执行此操作。

python python-itertools
2个回答
2
投票

产品的工作原理如下:

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

0
投票

如果要重复单个迭代,可以使用

repeat
itertools.product

参数
import itertools

n = int(input())
a = (True, False)
list(itertools.product(a, repeat=n))
© www.soinside.com 2019 - 2024. All rights reserved.