如何逐个遍历Python list,查找连续数字序列中缺失的数值
连续序列缺失值校验实现方案
核心实现思路
- 遍历列表到倒数第二个元素即可,避免下标越界
- 逐个对比当前元素加1后的值与下一个元素的值
- 两者不相等时,
当前元素 + 1就是第一个缺失的数值;如果两个元素差值大于2,循环输出中间所有缺失值即可
单缺失值场景代码(匹配你的需求示例)
你示例中的[0,1,2,4,5]场景直接用这段代码即可:
numbers = [0,1,2,4,5] for i in range(len(numbers) - 1): if numbers[i] + 1 != numbers[i+1]: # 输出缺失值 print(numbers[i] + 1) # 找到第一个缺失值后直接终止遍历,不需要继续校验 break
运行后直接输出3,完全符合你的要求。
多缺失值兼容版本
如果需要处理两个元素间隔多个缺失值、或者列表存在多个不连续点的场景,用下面的版本:
numbers = [0,1,3,6,7] missing_list = [] for i in range(len(numbers) - 1): current = numbers[i] next_val = numbers[i+1] # 遍历补充两个元素之间所有缺失的数值 for miss_val in range(current + 1, next_val): missing_list.append(miss_val) print("所有缺失的连续数值:", missing_list)
运行后输出[2,4,5],可以覆盖所有不连续场景。
注意事项
- 上述代码默认输入列表已经从小到大排序,如果原列表是乱序,遍历前加一行
numbers.sort()即可 - 算法时间复杂度为O(n),仅需一次遍历即可完成校验,性能开销极低
内容的提问来源于stack exchange,提问作者AlexLikesWater
相关产品推荐
相关产品推荐

