我想创建一个代码,可以迭代动态数量(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来完成。但是,没有一个答案解决了每个级别不同范围的问题。 与我类似的最近发布的问题是Variable number of nested for loops with fixed range。但是,user633183发布的答案是用python 3.X编写的,我在python 2.7编码,所以我无法实现它,因为它的一些代码在python 2.7上不起作用。 你能帮我解决一下这个问题。谢谢!
答案 0 :(得分:1)
因此,如果我正确理解您的问题,您希望迭代的值为[-3, -5, -3], [-2, -4, -2]...
。这可以通过python内置的zip函数轻松完成:
for x in zip(*ranges):
# Do something with x
x将取所有第一个值的元组,然后是所有第二个值的元组等,在最短列表结束时停止。使用此*
splat表示法甚至无需知道要组合的列表数量。
答案 1 :(得分:0)
您的代码相当于itertools.product
:
print(list(itertools.product(*ranges)))