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
错误分析
- 索引越界:循环范围
range(len(newlst))会让x遍历到列表最后一个元素的索引,此时newlst[x+1]访问的是不存在的位置,直接抛出IndexError。 - 逻辑错误:循环仅检查第一对相邻元素就返回结果,未遍历完所有元素对。比如第一对元素连续就直接返回
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
相关产品推荐
相关产品推荐

