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

Python3如何按唯一元素数量将列表拆分为多个子列表?

几种Python3实现方法

嘿,这个需求很容易实现,我给你分享两种实用的解决方案,都能达到你想要的效果:

方法一:利用itertools.groupby(最简洁高效)

因为你的原列表已经是按相同元素连续排列的,Python标准库中的itertools.groupby刚好能完美处理这种场景,它会把连续的相同元素自动分组,分组数量也恰好等于原列表中唯一元素的数量。

代码示例:

from itertools import groupby

original_list = [10,10,10,20,20,20,20,30,40,40,40]
result = [list(group) for key, group in groupby(original_list)]
print(result)
# 输出: [[10,10,10],[20,20,20,20],[30],[40,40,40]]

简单解释:groupby会遍历列表,把连续相同的元素聚合成一个迭代器,我们只需要把每个迭代器转换成列表,就能直接得到目标结果。如果你的原列表不是连续排列的相同元素,也可以先排序再用这个方法,不过你的例子里已经是有序的,直接用就好。

方法二:手动遍历实现(适合理解原理)

如果你不想依赖标准库,也可以自己写遍历逻辑,手动维护当前分组:

original_list = [10,10,10,20,20,20,20,30,40,40,40]
if not original_list:
    result = []
else:
    result = []
    current_num = original_list[0]
    current_group = [current_num]
    for num in original_list[1:]:
        if num == current_num:
            current_group.append(num)
        else:
            result.append(current_group)
            current_num = num
            current_group = [num]
    # 别忘了把最后一个组加入结果
    result.append(current_group)

print(result)
# 输出同样符合预期

简单解释:我们先把第一个元素作为当前分组的基准,然后遍历剩下的元素——和当前基准相同就加入当前组,不同就把当前组存入结果列表,再重新开始新的分组,最后记得把最后一个分组也加入结果即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:33:11