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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:动态嵌套for循环,每个循环具有不同的范围相关的知识,希望对你有一定的参考价值。

我想创建一个代码,可以迭代动态数量(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上不起作用。你能帮我解决一下这个问题。谢谢!

答案

您的代码相当于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表示法甚至不必知道要组合的列表的数量。

以上是关于Python:动态嵌套for循环,每个循环具有不同的范围的主要内容,如果未能解决你的问题,请参考以下文章

具有不同数量的 For 循环的函数(python)

在 for 循环期间访问嵌套对象 VueJS

c ++:嵌套for循环的动态数量(无递归)

在每个 for 循环中保存具有动态名称的结构

在每个for循环中保存具有动态名称的结构

python利用递归函数输出嵌套列表的每个元素