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

Python for循环体内修改索引跳2位不生效,对比C++该如何实现?

核心原因

Python 的 for i in range(len(c)) 语法和 C++ 的三段式 for 循环底层逻辑完全不同:

  • C++ 的 for 循环每次迭代都会主动执行末尾的自增逻辑,循环体内修改的索引值会直接参与后续的边界判断和自增计算
  • Python 的 for 循环本质是遍历 range() 生成的固定整数序列,每次循环的 i 是直接从序列中取出的下一个值,你在循环体内对 i 的赋值仅在当前轮次生效,下一轮迭代会被序列的下一个值直接覆盖,所以你写的 i = i+2 才会被忽略。

实现方案

你不需要强制使用for循环,while循环是当前场景下可读性、维护性最优的写法。如果一定要用for循环实现也可以,通过额外引入跳过标记变量来实现:

def jumpingOnClouds(c):
    count_jumps = 0
    skip_step = 0
    for i in range(len(c)):
        # 跳过指定步数的索引
        if skip_step > 0:
            skip_step -= 1
            continue
        # 优先跳2步
        if i+2 < len(c) and c[i] == 0 and c[i+2] == 0:
            # 跳2步需要跳过下1个遍历到的i
            skip_step = 1
            count_jumps += 1
        # 次选跳1步
        elif i+1 < len(c) and c[i] == 0 and c[i+1] == 0:
            count_jumps += 1
    return count_jumps

c = [0, 0, 0, 1, 0, 0]
jumpingOnClouds(c)

注意:上述for循环实现方式属于写法上的适配,实际运行效率和可读性都不如你提供的while循环版本,日常开发优先推荐使用while循环实现该需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:54:04