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 表示法甚至不必知道合并的列表数量。
我想创建一个代码,可以迭代动态数量 (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 发布的答案在每个级别的不同范围内解决了这个问题。
与我的问题最接近的发布问题是
您的代码等同于 itertools.product
:
print(list(itertools.product(*ranges)))
因此,如果我正确理解您的问题,您希望迭代的值是 [-3, -5, -3], [-2, -4, -2]...
。这可以通过内置于 python:
for x in zip(*ranges):
# Do something with x
x 将接受所有第一个值的元组,然后是所有第二个值的元组,等等,当最短列表结束时停止。使用此 *
splat 表示法甚至不必知道合并的列表数量。