【问题标题】:How to generate nested for loops on the fly in python [duplicate]如何在python中动态生成嵌套的for循环[重复]
【发布时间】:2017-12-19 23:27:47
【问题描述】:

想象有一个列表 (d),它由不同长度的其他列表组成。我们想创建一个看起来像下面结果的新列表。但显然在这种情况下一切都很清楚,我们有 a、b 和 c,因此我们可以创建嵌套循环。

a = [1, 2]
b = [10, 20]
c = [100, 200, 300]

d = [a, b, c]

ret = []
for a1 in a:
    for b1 in b:
        for c1 in c:
            ret.append([a1, b1, c1])

print ret

结果如下:

[[1, 10, 100], [1, 10, 200], [1, 10, 300], [1, 20, 100], [1, 20, 200], [1, 20, 300], [2, 10, 100], [2, 10, 200], [2, 10, 300], [2, 20, 100], [2, 20, 200], [2, 20, 300]]

如果我们只有 d 和未知数量的列表,其中有未知数量的元素,如下所示?

d = [[1, 2, 3], [10], [100, 200, 300, 400]]

【问题讨论】:

  • 你签出itertools了吗?
  • itertools 是要走的路
  • 是的,itertools.product

标签: python for-loop nested on-the-fly


【解决方案1】:

你要的是itertools.product:

import itertools
a = [1, 2]
b = [10, 20]
c = [100, 200, 300]
d = [a, b, c]
ret = list(itertools.product(a, b, c))  # Or list(itertools.product(*d))

【讨论】:

  • 太棒了!非常感谢吴海
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多