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

Python代码出现List Index Out Of Range错误,求排查修复及原因解析

修复「List Index Out Of Range」错误及原因分析

嘿,我看到你碰到了List Index Out Of Range的错误,咱们来一步步搞清楚问题出在哪,然后把它修好~

错误原因拆解

你的代码里有几个核心问题直接导致了索引越界:

  • 空列表直接访问索引:初始化时a、b、c都是空列表,但你在循环的第一行就尝试访问a[0]、b[0]、c[0]——空列表里没有任何元素,自然找不到索引为0的位置,这就是报错的根源。
  • 逻辑顺序错误:你在每次循环添加元素之前就去取列表元素,而且每次循环都重复排序,既浪费性能,也不符合“先分类再处理”的逻辑。
  • 转义字符错误:代码里的>是HTML转义字符,Python无法识别,要改成普通的>才能正确做大小比较。

另外,原代码里取a[0]、b[0](排序后的第一个元素,也就是最小值)的逻辑,和后续的“两数之和与第三个数比较”的需求不匹配——看起来你是想判断三个数中最大的数和另外两个之和的关系,所以应该取每个分组的最大值才对。

修复后的代码

t = int(input())
j = list(map(int, input().split()))
d = list(map(int, input().split()))
a = []
b = []
c = []

# 先把所有元素按标签分到对应列表
for num, tag in zip(j, d):
    if tag == 1:
        a.append(num)
    elif tag == 2:
        b.append(num)
    elif tag == 3:
        c.append(num)

# 先检查三个分组是否都有元素,避免后续索引错误
if not a or not b or not c:
    print("提示:某个分组没有元素,请检查输入数据")
else:
    # 对每个分组排序,取最大值(升序排序后最后一个元素是最大值)
    a.sort()
    b.sort()
    c.sort()
    l, h, m = a[-1], b[-1], c[-1]
    
    # 找出三个数里的最大值,计算另外两个数的和
    max_num = max(l, h, m)
    sum_rest = l + h + m - max_num
    
    # 执行判断逻辑
    if sum_rest > max_num:
        print(max_num)
    else:
        print(sum_rest)

关键修复点说明

  • 调整处理顺序:先完成所有元素的分类,再进行排序和判断,避免在列表为空时访问索引。
  • 添加空列表检查:如果输入数据中某个标签(1/2/3)没有对应的元素,会提前给出提示,防止再次触发索引错误。
  • 修正取值逻辑:用a[-1]取排序后的最大值,符合你后续比较“两数之和与最大数”的需求。
  • 修复比较符号:把>改成Python能识别的>,确保比较逻辑正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:46:10