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

Python for循环内修改迭代变量i为何未按预期实现跳转?

问题根因
  • Python的for循环配合range()使用时,迭代器会在循环初始化阶段就生成固定的数值序列,后续循环过程中无论你怎么修改迭代变量i,或者修改生成range用的参数c,都不会改变已经生成的迭代序列,下一轮循环还是会按初始序列的顺序取i值。
  • 你修改c = high的逻辑写在了for循环结束之后,循环执行过程中完全不会触发这个赋值,自然不会生效。
修复方案

改用可自主控制迭代变量的while循环实现需求,修改后代码如下:

def max_min(self, data, high, low):
    list1 = []
    list2 = []
    x = False
    i = 0
    data_len = len(data)
    while i < data_len:
        print(f"i = {i}")
        if i == low and not x:
            if high > low:
                list1.append(data[i])
                list2 = data[low + 1:high]
                x = True # 触发跳转标记
                print(f"list2 = {list2}")
                # 直接把迭代变量设为high,下一轮循环就从high开始执行
                i = high
            else:
                list2 = data[low + 1:]
                print(f"list2 = {list2}")
        else:
            list1.append(data[i])
        print(f"list1 = {list1}")
        i += 1
    return list1, list2

按你给出的high=6、low=3的测试场景运行上述代码,输出的i序列会完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:36:02