Python:动态嵌套 for 循环,每个循环具有不同的范围

Python: Dynamic nested for loops each with different range

我想创建一个代码,可以迭代动态数量 (N) 个嵌套循环,每个嵌套循环具有不同的范围。 例如:

N=3 
ranges=[[-3, -2, -1, 0, 1, 2, 3],
 [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5],
  [-3, -2, -1, 0, 1, 2, 3]]

for x in ranges[0]:
    for y in ranges[1]:
        for z in range[2]:
            variable=[x, y, z]

我是 python 的新手。当我查看此处发布的类似问题时,我了解到这可以通过递归或 itertools 来完成。但是,none 发布的答案在每个级别的不同范围内解决了这个问题。 与我的问题最接近的发布问题是 。但是,user633183 发布的答案在 python 3.X 中编码,而我在 python 2.7 中编码,所以我无法实现它,因为它的某些代码在 [=18] 上不起作用=] 2.7。 你能帮我解决这个问题吗?谢谢!

您的代码等同于 itertools.product:

print(list(itertools.product(*ranges)))

因此,如果我正确理解您的问题,您希望迭代的值是 [-3, -5, -3], [-2, -4, -2]...。这可以通过内置于 python:

中的 zip 功能轻松完成
for x in zip(*ranges):
    # Do something with x

x 将接受所有第一个值的元组,然后是所有第二个值的元组,等等,当最短列表结束时停止。使用此 * splat 表示法甚至不必知道合并的列表数量。