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

实现接收列表、返回仅含重复元素新列表的get_repeated函数的最Pythonic方式?

实现get_repeated函数的最Pythonic方式

方法一:使用collections.Counter(推荐)

借助Python标准库中的Counter工具快速统计元素出现次数,再通过列表推导筛选出重复元素,写法简洁且效率拉满:

from collections import Counter

def get_repeated(lst):
    return [item for item, count in Counter(lst).items() if count > 1]

测试示例:

list_a = ['a', 'b', 'c', 'c']
print(get_repeated(list_a))  # 输出: ['c']

Counter仅需遍历列表一次完成计数,整体时间复杂度为O(n),代码可读性极强,是最贴合Python风格的实现方式。

方法二:纯内置类型实现(无额外依赖)

如果不想导入外部模块,用两个集合分别记录已遍历元素和重复元素,同样能高效完成需求:

def get_repeated(lst):
    seen = set()
    repeated = set()
    for item in lst:
        if item in seen:
            repeated.add(item)
        else:
            seen.add(item)
    return list(repeated)

这种方法同样是O(n)时间复杂度,仅用Python内置的集合和列表类型,适合环境受限的场景。

注:以上两种方法返回的列表中,每个重复元素只会出现一次(即便原列表中重复多次),完全符合示例的预期行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:50:23