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

Python 3列表相邻元素比较报错求助:索引越界但结果符合预期

解决列表索引越界问题

嘿,我来帮你搞定这个报错!你遇到的IndexError: list index out of range是因为循环范围没处理对。

报错原因分析

你的list1有6个元素,索引范围是0-5。而range(len(list1))会生成0,1,2,3,4,5这6个索引值。当循环到最后一次(i=5)时,你尝试访问list1[i+1]也就是list1[6],这显然超出了列表的有效索引范围,所以触发了报错。

虽然前面的循环已经把符合条件的元素成功追加到list2里了,所以你单独查看list2能得到预期结果,但最后一次循环的报错必须修复。

修复方案

这里有两种简单的解决方法,都是基础Python语法,不用任何库:

方法1:调整循环范围

直接把循环的结束位置改成len(list1)-1,这样i的最大值就是4,i+1就是5,刚好是list1的最后一个索引,不会越界:

list1 = [5,9,3,2,7,11]
list2 = []
for i in range(len(list1)-1):  # 这里改成len(list1)-1
    if list1[i] < list1[i+1]:
        list2.append(list1[i+1])
print(list2)  # 输出: [9,7,11]

方法2:用zip配对相邻元素(更Pythonic)

这种方法不需要手动处理索引,直接把list1和它的切片list1[1:]配对,每次循环拿到前一个元素和当前元素,逻辑更清晰:

list1 = [5,9,3,2,7,11]
list2 = []
for prev_num, curr_num in zip(list1, list1[1:]):
    if curr_num > prev_num:
        list2.append(curr_num)
print(list2)  # 输出: [9,7,11]

两种方法都能得到你想要的结果,而且不会再触发索引越界的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:08:52