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

Python for循环内修改的i值被覆盖的原因及解决方法

问题成因

Python的for...in循环本质是对可迭代对象生成的迭代器进行遍历。你代码中用到的range(num)会生成一个固定的整数序列迭代器,每次进入新一轮循环时,迭代器会自动弹出序列中的下一个元素,直接赋值给循环变量i。你在循环体内部对i的修改仅在当前轮次的循环体内有效,不会影响迭代器的输出顺序,因此下一轮循环时i会被迭代器的新值直接覆盖,导致你对i的修改失效。

自定义调整循环变量的实现方案

如果需要在循环内部主动控制循环变量的取值,直接替换为while循环即可,你可以手动控制循环变量的初始化、更新逻辑和终止条件,修改后的示例代码如下:

def function():
    num = 10
    i = 0
    while i < num:
        print(i)
        if i % 2 == 0:
            i = i + 2
        else:
            i = i + 1

上述代码的输出结果为0 3 4 7 8,符合你原本预期的自定义调整循环变量的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:00:04