You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7实现动态数量且各层范围不同的嵌套循环

嘿,作为Python新手碰到动态嵌套循环的需求确实有点挠头,不过别担心,我给你准备了两个完全适配Python 2.7的方案,刚好能解决你每层循环范围不同的问题~

方案1:用itertools.product(简洁高效首选)

其实Python 2.7的itertools模块里已经自带了product方法,专门用来生成多个可迭代对象的笛卡尔积,这完全就是你要的动态嵌套循环的效果!

拿你给的例子来改:

import itertools

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]
]

# 用*ranges把列表拆成多个参数传给product,每个参数对应一层循环的范围
for variable in itertools.product(*ranges):
    # 这里可以替换成你对variable的实际操作,比如打印或者计算
    print(variable)

这段代码运行后,variable会依次取到所有(x,y,z)的组合,和你写三层嵌套循环的效果完全一样,而且不管N是多少,只要给ranges传入对应数量的范围列表,就能自动生成对应层数的循环。

方案2:递归实现(适合理解原理)

如果你想搞清楚动态嵌套循环的底层逻辑,递归是个很好的方式。核心思路是每次处理一个范围,把当前的元素组合传递到下一层递归,直到所有范围都处理完:

def dynamic_loop(current_combination, remaining_ranges):
    # 当没有剩余范围时,说明已经生成了完整的组合
    if not remaining_ranges:
        # 这里替换成你需要对组合做的操作
        print(current_combination)
        return
    # 遍历当前第一个范围的所有元素,递归处理剩下的范围
    for num in remaining_ranges[0]:
        dynamic_loop(current_combination + [num], remaining_ranges[1:])

# 调用示例
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]
]

dynamic_loop([], ranges)

这个函数一开始传入空列表作为初始组合,然后一层一层把每个范围的元素加进去,直到所有范围都处理完,就输出完整的组合。

两个方案都能完美在Python 2.7上运行,推荐优先用itertools.product,因为它是官方优化过的,效率更高,代码也更简洁~

内容的提问来源于stack exchange,提问作者PJORR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:55:14