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

如何实现获取两个列表重复元素的功能?附代码示例

获取两个列表的重复元素实现方案

基础高效实现(无顺序要求)

利用集合的交集特性,能快速得到两个列表的共同元素,代码简洁且效率高:

def getDuplicates(list1, list2):
    return list(set(list1) & set(list2))

测试你的示例:

list1 = [1,2,3,4,5]
list2 = [1,2,8,4,6]

duplicates = getDuplicates(list1, list2)
print(duplicates)  # 输出类似 [1,2,4](集合本身无序,顺序可能略有差异)

保持原列表顺序的实现

如果需要保留元素在list1中的出现顺序,或者要保留list1中重复出现的元素(只要list2包含该元素),可以用列表推导式结合集合优化查找效率:

def getDuplicates(list1, list2):
    # 把list2转成集合,将查找复杂度从O(n)降到O(1)
    set2 = set(list2)
    return [item for item in list1 if item in set2]

比如当list1 = [2,1,1,3,4],list2 = [1,2,4]时,这个方法会返回[2,1,1,4],既保留原顺序又保留重复项。

方法说明

  • 集合交集法:时间复杂度O(n+m),适合不关心元素顺序和重复次数的场景,代码最简洁。
  • 列表推导式法:同样是O(n+m)时间复杂度,兼顾顺序和重复元素的保留,实用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:15:30