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

如何将包含连续递增整数的Python列表拆分为嵌套子列表

Python 连续递增整数列表分组实现方案

下面提供两种常用的实现方式,都可以满足需求:

方法1:基础遍历实现(逻辑清晰,无额外依赖)

思路很直接:遍历列表时持续追踪当前连续子序列,遇到不连续的元素就把当前子序列存入结果,开启新的子序列即可。

def group_continuous(nums):
    if not nums:
        return []
    result = []
    current_group = [nums[0]]
    for num in nums[1:]:
        if num == current_group[-1] + 1:
            current_group.append(num)
        else:
            result.append(current_group)
            current_group = [num]
    # 遍历结束后加入最后一组
    result.append(current_group)
    return result

# 测试效果
example = [2, 43, 44, 64, 143, 144, 145, 146, 147, 148, 178, 179, 180, 181, 182, 183, 184, 211]
print(group_continuous(example))
# 输出:[[2], [43, 44], [64], [143, 144, 145, 146, 147, 148], [178, 179, 180, 181, 182, 183, 184], [211]]

方法2:itertools.groupby 简洁实现(更符合Python习惯)

利用连续递增整数的特征:元素值 - 元素索引的结果是固定值,把这个值作为分组键即可快速完成分组。

from itertools import groupby

def group_continuous(nums):
    return [list(group) for _, group in groupby(enumerate(nums), key=lambda x: x[1] - x[0])]

# 测试效果和方法1完全一致

注意事项

如果你的原始列表没有预先排序,需要先调用sorted(nums)排序后再传入上述函数,否则会出现分组不符合预期的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:54:02