Python列表如何删除所有出现多次的元素,仅保留仅出现一次的元素
Python实现移除列表中所有出现过多次的元素
你当前的代码逻辑是普通去重,仅会跳过已经添加过的元素,最终会保留每个重复元素的第一个实例,和你要的「所有出现次数>1的元素全部移除」的需求不符。
方法1:使用标准库collections.Counter实现(最简洁)
Counter是Python标准库中专门用于统计可迭代对象元素频率的工具,实现代码如下:
from collections import Counter my_list = [1,2,3,4,2,3] # 先统计所有元素的出现次数 element_counts = Counter(my_list) # 仅保留出现次数等于1的元素 new_list = [x for x in my_list if element_counts[x] == 1] print(new_list) # 输出:[1, 4]
方法2:手动统计频率(无需导入额外库)
如果不想导入标准库,可以自己用字典实现频率统计,逻辑和上述方法一致:
my_list = [1,2,3,4,2,3] element_counts = {} # 第一步:遍历列表统计每个元素的出现次数 for num in my_list: element_counts[num] = element_counts.get(num, 0) + 1 # 第二步:筛选出现次数等于1的元素 new_list = [num for num in my_list if element_counts[num] == 1] print(new_list) # 输出:[1, 4]
内容的提问来源于stack exchange,提问作者Rahul Maurya
相关产品推荐
相关产品推荐

