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

如何在数组中保留唯一值?处理$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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:51:47