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

Python中如何将含重复元素的列表拆分为无重复元素的子列表

解决Python列表拆分问题

给定列表 my_list = ['1','2','2','3','3','3','4','4','5'],我们需要将其拆分为由子列表构成的新列表,要求每个子列表内部无重复元素,最终得到输出 [['1','2','3','4','5'],['2','3','4'],['3']]。这里提供两种实用的解决思路:

方法一:基于元素出现次数构建子列表

先统计每个元素的出现次数,再按照最大出现次数循环,每次收集仍有剩余次数的元素,直到所有元素的计数耗尽:

from collections import Counter

my_list = ['1','2','2','3','3','3','4','4','5']
element_counts = Counter(my_list)
max_occurrences = max(element_counts.values())
result = []

for _ in range(max_occurrences):
    current_sublist = []
    for num in element_counts:
        if element_counts[num] > 0:
            current_sublist.append(num)
            element_counts[num] -= 1
    if current_sublist:
        result.append(current_sublist)

print(result)

这种方法的核心是利用Counter快速统计元素频率,再按频率分配元素到各个子列表,逻辑清晰且效率较高。

方法二:迭代筛选并移除元素

另一种直观的思路是,每次从原列表中提取去重后的元素作为子列表,然后从原列表中移除这些元素的一次出现,重复操作直到原列表为空:

my_list = ['1','2','2','3','3','3','4','4','5']
result = []

while my_list:
    # 保留原顺序的去重元素作为当前子列表
    current_sublist = list(dict.fromkeys(my_list))
    result.append(current_sublist)
    # 移除每个元素的一次出现
    for num in current_sublist:
        my_list.remove(num)

print(result)

这种方法不需要额外的统计工具,直接通过迭代修改原列表实现需求,适合对基础操作更熟悉的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:24:22