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

Python列表负数求和遇IndexError:列表索引越界问题求助

解决列表负数求和的IndexError问题

嘿,我来帮你搞定这个索引越界的bug!咱们先拆解一下问题出在哪:

你的列表my_list一共有10个元素,Python里列表的索引是从0开始计数的,所以合法的索引范围是0到9(也就是len(my_list)-1)。但你的代码里有两个关键问题:

  1. 初始i是0,第一次循环就执行i +=1变成1,当i增加到10的时候,你还在尝试访问my_list[10]——这显然超出了列表的最大索引,直接触发IndexError。
  2. 你把i <= len(my_list)放在了元素判断之后,这意味着在检查索引是否合法之前,你已经先去访问列表元素了,这个条件完全起不到防护作用。

修复方案1:修正你的while循环逻辑

我们调整循环条件和执行顺序,确保只在合法索引范围内访问元素:

my_list = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7]
mynb = 0
i = 0
# 用i < len(my_list)作为循环终止条件,确保索引不会越界
while i < len(my_list):
    if my_list[i] <= 0:
        mynb += my_list[i]
        print(mynb)
    # 每次循环最后再递增索引,避免一开始就跳过第一个元素
    i += 1

修复方案2:更Pythonic的写法(推荐)

手动管理索引很容易出错,Python里直接遍历列表元素会更简洁安全:

my_list = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7]
mynb = 0
for num in my_list:
    if num <= 0:
        mynb += num
        print(mynb)

进阶方案:如果不需要实时打印累加值

可以用生成器表达式一步完成求和,代码更紧凑:

my_list = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7]
mynb = sum(num for num in my_list if num <= 0)
print(mynb)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:08:28