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

Python实现:将列表拆分为连续重复元素子列表并保留原始顺序

解决连续相同元素分组的问题

没问题,你这个需求本质就是按连续出现的相同元素进行分组,最后那个单独的1因为和前面的1不连续,自然会被拆成独立的组,刚好符合你的要求。下面给你两种实现方案:

方案一:手动遍历实现(直观易懂)

这种方式适合理解分组的底层逻辑,一步步控制分组过程:

N = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 1]
N2 = []

# 处理空列表的边界情况(可选,根据你的实际场景调整)
if not N:
    print(N2)
else:
    # 初始化第一个分组
    current_group = [N[0]]
    # 从第二个元素开始遍历
    for num in N[1:]:
        # 如果当前元素和分组内的元素相同,就加入分组
        if num == current_group[0]:
            current_group.append(num)
        # 否则把当前分组存入结果,重新创建新分组
        else:
            N2.append(current_group)
            current_group = [num]
    # 别忘了把最后一个分组加入结果
    N2.append(current_group)

print(N2)
# 输出结果:[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5, 5], [1]]

方案二:用itertools.groupby实现(简洁高效)

Python内置的itertools.groupby工具专门用来处理连续相同元素的分组,一行列表推导式就能搞定:

from itertools import groupby

N = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 1]
# 把groupby返回的迭代器转为列表,得到分组结果
N2 = [list(group) for key, group in groupby(N)]

print(N2)
# 输出结果和上面完全一致

小说明

  • 手动遍历的方式适合新手理解分组逻辑,也方便你在需要的时候自定义分组规则(比如加入额外判断);
  • groupby是更Pythonic的写法,代码简洁且效率高,日常开发中推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:35:17