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

为何使用if语句与for循环时出现IndexError?求列表最大值出现次数

列表索引越界问题分析与修复

这段代码运行时提示**"列表索引越界"**,核心问题出在for循环的逻辑上:

  • for i in a循环中,i取的是列表a里的元素值(比如5、1、88这些),而不是元素的索引位置。
  • 当执行a[i]时,相当于用元素值当作索引去访问列表,比如元素88作为索引时,远超过列表a的最大索引(列表长度15,索引范围0-14),直接触发越界报错。

修复方案一:直接遍历元素(最直观)

不用索引,直接判断每个元素是否等于最大值:

L = []
a = [5, 1, 4, 88, 6, 7, 4, 88, 6, 6, 88, 5, 3, 45, 57]

b = max(a)

for num in a:
    if num == b:
        L.append(num)
print(L)  # 输出:[88, 88, 88]

修复方案二:通过索引遍历(如果需要索引操作)

如果业务场景需要用到索引,可以遍历索引范围:

L = []
a = [5, 1, 4, 88, 6, 7, 4, 88, 6, 6, 88, 5, 3, 45, 57]

b = max(a)

for i in range(len(a)):
    if a[i] == b:
        L.append(a[i])
print(L)

更简洁的写法:列表推导式

一行代码完成筛选:

a = [5, 1, 4, 88, 6, 7, 4, 88, 6, 6, 88, 5, 3, 45, 57]
b = max(a)
L = [num for num in a if num == b]
print(L)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:10:15