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

Python实现从数字列表中提取所有连续数字序列

提取列表中的连续数字序列

给定列表:

lst = [0, 1, 3, 4, 6, 9, 10, 11, 12, 13, 15]

需要将其中连续递增1的数字序列提取为嵌套列表,期望结果:

[[0, 1], [3, 4], [6], [9, 10, 11, 12, 13], [15]]

方法一:用itertools.groupby实现(简洁高效)

利用groupby按元素与索引的差值分组——连续递增1的元素和对应索引的差值固定,以此作为分组依据:

from itertools import groupby

lst = [0, 1, 3, 4, 6, 9, 10, 11, 12, 13, 15]
# 用迭代器生成索引,计算元素与索引的差值作为分组key
result = [list(group) for _, group in groupby(lst, key=lambda x, idx_iter=iter(range(len(lst))): x - next(idx_iter))]
print(result)

方法二:优化遍历判断逻辑

如果不想引入额外库,可以优化你已有的遍历思路,让代码更简洁清晰:

lst = [0, 1, 3, 4, 6, 9, 10, 11, 12, 13, 15]
if not lst:
    result = []
else:
    result = [[lst[0]]]
    for num in lst[1:]:
        # 判断当前数字是否与最后一个序列的末尾连续
        if num == result[-1][-1] + 1:
            result[-1].append(num)
        else:
            result.append([num])
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:42:22