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的错误,咱们来一步步搞清楚问题出在哪,然后把它修好~

错误原因拆解

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

  • 空列表直接访问索引:初始化时abc都是空列表,但你在循环的第一行就尝试访问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

火山引擎 最新活动