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

Python函数consecutive_combo调试求助:列表连续校验报错

代码调试:合并列表后校验连续递增无缺失数字

问题概述

编写Python代码合并两个列表并排序,校验合并后的列表元素是否连续递增无缺失,但运行时触发索引越界错误,且逻辑存在缺陷。

当前代码

def consecutive_combo(lst1, lst2):
    newlst = lst1 + lst2
    newlst.sort()

    for x in range(len(newlst)):
        if newlst[x] + 1 != newlst[x + 1]:
            return False
        if newlst[x] + 1 == newlst[x + 1]:
            return True

错误分析

  1. 索引越界:循环范围range(len(newlst))会让x遍历到列表最后一个元素的索引,此时newlst[x+1]访问的是不存在的位置,直接抛出IndexError。
  2. 逻辑错误:循环仅检查第一对相邻元素就返回结果,未遍历完所有元素对。比如第一对元素连续就直接返回True,忽略后续可能存在的缺失;第一对不连续则直接返回False,逻辑不完整。

修复后的代码

def consecutive_combo(lst1, lst2):
    newlst = lst1 + lst2
    newlst.sort()

    # 遍历到倒数第二个元素,避免索引越界
    for x in range(len(newlst) - 1):
        if newlst[x] + 1 != newlst[x + 1]:
            return False
    # 所有相邻元素都连续,返回True;单个元素时直接返回True
    return True

修复说明

  • 调整循环范围为range(len(newlst)-1),确保x+1始终是有效的列表索引。
  • 移除提前返回True的逻辑,仅当所有相邻元素对都满足连续条件时,才在循环结束后返回True。
  • 兼容单个元素的特殊情况:当合并后的列表只有一个元素时,循环不执行,直接返回True(符合连续定义)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:25:42