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

Python用for循环删除列表元素报IndexError索引越界错误如何解决

代码报错核心原因
  • range(len(prices))生成的迭代序列是固定的:初始列表长度为37,所以循环会固定遍历i从0到36,不会随着列表后续长度变化自动更新
  • 循环体内手动执行i -= 1完全不生效:Python的for循环每次迭代都会从range序列里取下一个值,你在循环内修改i的值不会改变下一次迭代取出的i数值
  • 当你不断pop元素让列表长度缩短到25时,列表最大有效索引只有24,但循环还是会继续取i=25访问元素,自然触发索引越界错误
推荐正确写法

写法1:列表推导式(最推荐,简洁高效)

直接生成符合要求的新列表,是Python中过滤列表的标准写法:

prices = [item for item in prices if item.text != "PayLivery"]

如果有其他变量引用了原prices列表需要同步更新,就用下面的原地修改写法。

写法2:倒序遍历原地删除

倒着从最后一个索引往前遍历,删除元素不会影响还没遍历到的前序索引,不会出现越界问题:

for i in range(len(prices) - 1, -1, -1):
    if prices[i].text == "PayLivery":
        prices.pop(i)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:18:05