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

列表元素两两对比求左侧较小值时遇索引越界问题求助

解决列表索引越界问题:获取每个元素的左侧较小值

你遇到的「list index out of range」错误很好排查——当你的while循环运行到最后一次迭代时,i等于len(lio)-1(也就是列表最后一个元素的索引),这时候你尝试访问lio[i+1],但列表的最大索引就是len(lio)-1,自然就会触发索引越界的问题。

另外看你的判断条件lio[i] < (lio[i + 1]) - 1,这和你描述的需求不太匹配——你说对比1和34时,1小于34就添加,但这个条件会变成1 < 34-1(也就是1<33),虽然这次成立,但如果遇到相邻元素是34和35的情况,34 < 35-1就会变成34<34,结果不成立,不符合你要的“左侧元素小于右侧就添加”的逻辑,这个多余的-1应该去掉。

下面是修正后的代码,用while循环实现的版本:

lio = [1,34,56,78,97,889]
i = 0
liu = []
# 循环终止条件改为i < len(lio)-1,只遍历到倒数第二个元素
while i < len(lio) - 1:
    if lio[i] < lio[i + 1]:
        liu.append(lio[i])
    i += 1
print(liu)

如果你更习惯用for循环,这个写法会更简洁:

lio = [1,34,56,78,97,889]
liu = []
# range(len(lio)-1)会生成0到4的索引,刚好对应前5个元素,每个都能和下一个元素对比
for i in range(len(lio)-1):
    if lio[i] < lio[i+1]:
        liu.append(lio[i])
print(liu)

运行这两段代码都会输出[1, 34, 56, 78, 97],完全符合你描述的需求:遍历每一对相邻元素,把左侧较小的那个元素加入新列表,同时彻底解决了索引越界的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:36:13