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

Python实现:将列表中出现超2次的元素最多保留2次

列表元素限次保留实现方案

需求说明

  • 原始输入列表:A=[1,1,1,2,2,2,4,5,6,6,7,7,7]
  • 处理规则:所有出现次数超过2次的元素,最终最多保留2次,且保留原列表元素顺序
  • 预期输出:new_A=[1,1,2,2,4,5,6,6,7,7]

基于Counter的最优实现

你已经用到的collections.Counter是做频次统计非常方便的工具,不需要提前统计全表频次再做二次过滤,边遍历边计数的写法逻辑最简洁、运行效率也最高,完整可运行代码如下:

from collections import Counter

# 原始列表
A = [1,1,1,2,2,2,4,5,6,6,7,7,7]
# 初始化计数器
element_counter = Counter()
new_A = []

for num in A:
    # 当前元素累计出现次数不足2次时,才加入结果列表
    if element_counter[num] < 2:
        new_A.append(num)
        element_counter[num] += 1

print(new_A)

运行后输出结果和预期完全一致:[1, 1, 2, 2, 4, 5, 6, 6, 7, 7]

无依赖原生实现

如果不想导入collections模块,用普通字典做计数也能实现完全一样的效果:

A = [1,1,1,2,2,2,4,5,6,6,7,7,7]
count_map = {}
new_A = []

for num in A:
    current_count = count_map.get(num, 0)
    if current_count < 2:
        new_A.append(num)
        count_map[num] = current_count + 1

print(new_A)

注意:不要采用先统计全量频次、再按频次切片拼接的写法,这种写法很容易破坏原列表的元素顺序,且代码冗余度更高,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:48:20