itertools 中可迭代列表的列表

List of lists to iterables in itertools

我想使用 itertools.product。 文档指定 itertools.product(*iterables, repeat=1)。 例如这个

for i in itertools.product([1,3,4],[2,3,6],[9,4]):
    print(i)

产出

(1, 2, 9)
(1, 2, 4)
(1, 3, 9)
(1, 3, 4)
(1, 6, 9)
(1, 6, 4)
(3, 2, 9)
(3, 2, 4)
(3, 3, 9)
(3, 3, 4)
(3, 6, 9)
(3, 6, 4)
(4, 2, 9)
(4, 2, 4)
(4, 3, 9)
(4, 3, 4)
(4, 6, 9)
(4, 6, 4)

我的问题是我没有固定数量的此类列表,而是一个变量列表(例如 [[1,3,4],[2,3,6],[9,4]])。

我想将这个列表列表转换为可以传递给 itertools.product 的可迭代对象。

奖励积分。 实际上我所拥有的不是一个列表列表,而是一个字典,其中的值是列表。因此,如果我可以避免将其转换为列表的列表,那就更好了。

我想这就是你想要的:

import itertools

lists = [[1, 3, 4], [2, 3, 6], [9, 4]]
for i in itertools.product(*lists):
    print(i)

输出:

(1, 2, 9)
(1, 2, 4)
(1, 3, 9)
(1, 3, 4)
(1, 6, 9)
(1, 6, 4)
(3, 2, 9)
(3, 2, 4)
(3, 3, 9)
(3, 3, 4)
(3, 6, 9)
(3, 6, 4)
(4, 2, 9)
(4, 2, 4)
(4, 3, 9)
(4, 3, 4)
(4, 6, 9)
(4, 6, 4)