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

Python检查列表是否含连续整数及统计缺失整数个数

统计整数列表相邻分段间的缺失整数个数

先看这个示例列表:

l = [1, 2, 3, 4, 10, 11, 12]

它显然不是连续的整数序列,我们可以用这段代码快速判断:

print(sorted(l) == list(range(min(l), max(l)+1)))
# 输出: False

输出为False,因为序列里缺少了5、6、7、8、9这几个整数。

现在要扩展这个功能:在列表无重复元素的前提下,统计每段连续整数之间缺失的整数个数。比如:

l = [1, 2, 3, 4, 10, 11, 12, 14]

对应的输出应该是[5, 1]——4和10之间缺了5个整数,12和14之间缺了1个整数。

实现代码

def count_missing_integers(l):
    # 先对列表排序,处理无序输入的情况
    sorted_list = sorted(l)
    missing_counts = []
    
    # 遍历相邻元素对
    for idx in range(1, len(sorted_list)):
        prev_num = sorted_list[idx-1]
        curr_num = sorted_list[idx]
        # 计算缺失个数:当前数 - 前一个数 - 1
        missing = curr_num - prev_num - 1
        if missing > 0:
            missing_counts.append(missing)
    
    return missing_counts

# 测试示例
test_list1 = [1, 2, 3, 4, 10, 11, 12]
print(count_missing_integers(test_list1))  # 输出: [5]

test_list2 = [1, 2, 3, 4, 10, 11, 12, 14]
print(count_missing_integers(test_list2))  # 输出: [5, 1]

代码说明

  • 先对输入列表排序,确保我们能按顺序检查相邻的整数段
  • 遍历排序后的列表,计算每对相邻元素的差值,减1就是两段之间缺失的整数个数(比如10-4-1=5,对应5到9这5个缺失数)
  • 只收集大于0的缺失个数,过滤掉连续元素的情况(比如相邻元素是11和12,差值为1,缺失个数为0,不会加入结果)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:24:24