如何在数组中保留唯一值?处理$str([1,2,3,1,2,4,5])得$str([3,4,5])
移除数组中重复元素,仅保留出现一次的元素
针对你给出的数组[1,2,3,1,2,4,5],想要得到仅包含只出现一次元素的结果[3,4,5],这里有几种Python实现方法,供你参考:
方法1:使用collections.Counter统计频次
这是最简洁的方法,利用标准库的Counter快速统计每个元素的出现次数,再筛选出频次为1的元素:
from collections import Counter original_arr = [1,2,3,1,2,4,5] element_counts = Counter(original_arr) result = [num for num in original_arr if element_counts[num] == 1] print(result) # 输出: [3,4,5]
原理:Counter会生成一个键为数组元素、值为对应出现次数的字典,通过列表推导式遍历原数组,只保留次数等于1的元素,同时保留原数组中元素的出现顺序。
方法2:手动统计元素频次(不依赖额外库)
如果不想引入外部库,可以手动构建字典来统计次数:
original_arr = [1,2,3,1,2,4,5] count_dict = {} # 第一步:统计每个元素的出现次数 for num in original_arr: count_dict[num] = count_dict.get(num, 0) + 1 # 第二步:筛选出仅出现一次的元素 result = [num for num in original_arr if count_dict[num] == 1] print(result) # 输出: [3,4,5]
原理:通过遍历数组,用字典记录每个元素的出现次数,再二次遍历数组筛选符合条件的元素,逻辑清晰且无外部依赖。
方法3:利用集合标记重复元素
先找出所有重复出现的元素,再从原数组中排除这些元素:
original_arr = [1,2,3,1,2,4,5] seen = set() duplicates = set() # 标记所有重复出现的元素 for num in original_arr: if num in seen: duplicates.add(num) seen.add(num) # 筛选出不在重复集合中的元素 result = [num for num in original_arr if num not in duplicates] print(result) # 输出: [3,4,5]
原理:通过两个集合分别记录已见过的元素和重复元素,最后遍历原数组时只保留未被标记为重复的元素,适合需要明确区分重复元素的场景。
内容的提问来源于stack exchange,提问作者fikri ramadhan
相关产品推荐
相关产品推荐

