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

如何进一步优化这段Python重复元素查找代码以提升性能?

优化Python找重复元素代码的方案

原代码采用两层嵌套循环,时间复杂度为O(n²),且每次判断元素是否在duplicates列表中是O(k)(k为当前重复元素数量),数据量较大时性能会明显下降。以下是几种高效优化方案:

方案1:利用集合统计出现次数(最优时间复杂度)

通过一次遍历,用两个集合分别记录已遍历元素和重复元素,集合的查找、插入操作均为O(1),整体时间复杂度O(n)。

def find_duplicates(lst):
    seen = set()
    duplicates = set()
    for item in lst:
        if item in seen:
            duplicates.add(item)
        else:
            seen.add(item)
    return list(duplicates)
  • 集合自动去重,无需额外判断元素是否已在结果中,避免了原代码中列表线性查找的开销。

方案2:用字典计数

通过字典统计每个元素的出现次数,再筛选出出现次数≥2的元素,时间复杂度同样为O(n),适合需要同时获取元素重复次数的场景。

def find_duplicates(lst):
    count = {}
    for item in lst:
        count[item] = count.get(item, 0) + 1
    return [item for item, cnt in count.items() if cnt >= 2]

方案3:排序后遍历(空间优化方向)

若限制额外空间使用,可先对列表排序,再遍历一次寻找相邻的重复元素,时间复杂度O(n log n)(主要来自排序操作),空间复杂度O(1)(允许修改原列表时)。

def find_duplicates(lst):
    if not lst:
        return []
    lst_sorted = sorted(lst)
    duplicates = set()
    prev = lst_sorted[0]
    for item in lst_sorted[1:]:
        if item == prev:
            duplicates.add(item)
        prev = item
    return list(duplicates)
  • 排序后重复元素相邻,只需一次遍历即可定位重复项,用集合存储重复元素避免结果中出现重复值。

内容的提问来源于stack exchange,提问作者Orion Chat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:40:04