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

Python:移除二维列表中全局重复的单个元素

解决方案:删除二维列表中全局重复的单个元素

纯Python实现

先通过collections.Counter统计所有元素的全局出现次数,再遍历每个子列表筛选出仅出现一次的元素:

from collections import Counter

original_list = [
    [1, 3, 4, 5, 77],
    [1, 5, 10, 3, 4],
    [1, 5, 100, 3, 4], 
    [1, 3, 4, 5, 89], 
    [1, 3, 5, 47, 48]
]

# 摊平列表并统计元素频次
element_counts = Counter(num for sublist in original_list for num in sublist)

# 过滤出每个子列表中仅出现一次的元素
new_list = [[num for num in sublist if element_counts[num] == 1] for sublist in original_list]

运行后得到的new_list即为目标结果:

[[77], [10], [100], [89], [47, 48]]

Pandas场景适配

如果要将结果作为新列存入DataFrame,结合apply方法即可快速实现:

import pandas as pd
from collections import Counter

# 构造示例DataFrame
df = pd.DataFrame({
    'original_col': [
        [1, 3, 4, 5, 77],
        [1, 5, 10, 3, 4],
        [1, 5, 100, 3, 4], 
        [1, 3, 4, 5, 89], 
        [1, 3, 5, 47, 48]
    ]
})

# 统计全局元素频次
all_elements = [num for sublist in df['original_col'] for num in sublist]
element_counts = Counter(all_elements)

# 生成唯一元素新列
df['unique_elements'] = df['original_col'].apply(lambda x: [num for num in x if element_counts[num] == 1])

方案优势

  • 仅需一次全局统计,时间复杂度为O(N)(N为所有元素的总数量),效率较高
  • 代码简洁直观,利用列表推导式和Counter工具减少冗余代码
  • 完美适配Pandas的DataFrame列处理场景

内容的提问来源于stack exchange,提问作者Mr.Slow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:05:32