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

如何在Python生成列表相邻元素对时避免IndexError索引越界?

解决列表索引越界问题的几种方法

你的代码触发IndexError是因为循环遍历了列表的所有元素,当处理最后一个元素时,idx+1超出了列表的最大索引范围(原列表长度为7,索引从0到6,idx=6时idx+1=7不存在)。以下几种方法可以提前终止循环或避免索引越界:

方法1:遍历到倒数第二个元素

通过切片list[:-1]只取列表的前n-1个元素(n为列表长度),循环不会处理最后一个元素,自然不会出现idx+1越界的情况:

my_list = [6, 63, 131, 182, 507, 659, 669]
for idx, i in enumerate(my_list[:-1]):
    print(i + 1, my_list[idx + 1])

方法2:循环内判断终止条件

在循环中检查当前索引是否为最后一个,若是则主动终止循环:

my_list = [6, 63, 131, 182, 507, 659, 669]
for idx, i in enumerate(my_list):
    if idx == len(my_list) - 1:
        break
    print(i + 1, my_list[idx + 1])

方法3:用zip配对元素(更Pythonic)

直接将原列表和原列表的切片[1:]配对,zip会自动在较短的序列结束时停止循环,无需手动处理索引:

my_list = [6, 63, 131, 182, 507, 659, 669]
for a, b in zip(my_list, my_list[1:]):
    print(a + 1, b)

如果需要直接生成目标元素对列表,可用列表推导式:

my_list = [6, 63, 131, 182, 507, 659, 669]
result = [(a + 1, b) for a, b in zip(my_list, my_list[1:])]
print(result)  # 输出: [(7,63),(64,131),(132,182),(183,507),(508,659),(660,669)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:35:23