【问题标题】:List of lists to iterables in itertoolsitertools 中可迭代的列表列表
【发布时间】:2021-11-09 16:09:57
【问题描述】:

我想使用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 的可迭代对象。

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

【问题讨论】:

  • 这应该在本网站上全面介绍。如果您搜索,有很多使用 itertools 中的排列和组合来解决此问题的示例。

标签: python itertools combinatorics


【解决方案1】:

我认为这就是你想要的:

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)

【讨论】:

    猜你喜欢
    • 2019-07-05
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2020-12-03
    • 1970-01-01
    相关资源
    最近更新 更多