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

Python自定义sort()函数报IndexError列表索引越界如何解决

报错原因

代码触发IndexError: list index out of range的直接原因是循环边界设置错误:
当i等于len(liste)-1(也就是列表最后一个元素的索引)时,判断条件里访问了liste[i+1],此时索引值等于列表长度,超出Python列表合法索引范围(列表最大合法索引为长度减1)。

原有逻辑还存在两个隐藏问题:

  • 相邻两个元素值相等时,既不触发交换分支,也不触发i +=1的分支,会直接进入死循环
  • 你当前实现的是交换后从头重遍历的冒泡排序雏形,边界错误会直接打断排序流程
修正代码

只需要调整循环终止条件,同时合并相等场景的分支逻辑即可:

liste = [10, 4, 9, 6, 11, 8, 1]
i = 0

# 循环边界改为len(liste)-1,保证i+1永远是合法索引
while i < len(liste) - 1:
    if liste[i] > liste[i+1]:
        liste[i], liste[i+1] = liste[i+1], liste[i]
        i = 0
    else:
        # 包含当前元素小于、等于下一个元素两种情况,直接后移指针
        i += 1
    print(liste)

运行后代码不会触发索引越界,最终会输出正确排序结果[1, 4, 6, 8, 9, 10, 11]。

注:如果要优化排序效率,可以改成标准冒泡排序实现,每轮遍历把当前最大值沉到列表尾部,逐轮缩短遍历范围,不用每次交换都从头开始检查,能减少大量无效遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:15:44