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

为何while循环执行print(A[i])会触发list index out of range错误?

问题分析:列表索引越界原因

你的代码如下:

A = [1,2,3,4,5]
i = 0
while i < len(A) :
    i += 1
    print(A[i])

核心原因:循环判断与索引操作的时序错配

Python列表的索引从0开始,你的列表A长度为5,有效索引范围是0到4(对应元素1到5)。我们拆解循环的每一步:

  • 初始i=0,满足i < 5的条件,进入循环:i自增为1,打印A[1](元素2)
  • i=1,满足i <5,进入循环:i自增为2,打印A[2](元素3)
  • i=2,满足条件:i自增为3,打印A[3](元素4)
  • i=3,满足条件:i自增为4,打印A[4](元素5)
  • i=4,仍然满足i <5,进入循环:i自增为5,此时尝试访问A[5]——但列表A不存在索引为5的元素,直接触发list index out of range错误。

简单来说:循环条件只判断了进入循环前的i是否小于列表长度,但进入循环后先执行i+=1,当i原本是4时,自增后变成5,超出了列表的有效索引范围。

而调换i+=1和print顺序后,会先打印当前i对应的元素,再自增i:当i到4时,打印完A[4],i变成5,下一次循环判断5 <5不成立,循环正常结束,不会触发越界。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:52:05