为何使用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
相关产品推荐
相关产品推荐

