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

Python如何提取两个列表的共同元素并去除重复值

解决方案

问题原因

你现有代码输出重复值的原因很简单:输入列表a本身就包含两个重复的元素1,遍历a时只要元素存在于b中就直接打印,自然会输出两次1。

最简实现(推荐)

利用Python集合的特性:集合会自动去重,且内置交集计算逻辑,完全适配任意长度的输入列表,一行代码即可完成需求:

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

# 计算交集后转列表,顺序可能和原列表不一致,不要求顺序的话优先用这个
result = list(set(a) & set(b))
# 也可以写为 result = list(set(a).intersection(b)),效果完全一致
print(result)

保留循环逻辑的实现

如果你不想用集合,想沿用你之前的循环写法,可以额外初始化一个空列表存储结果,每次添加元素前先判断是否已经存在于结果列表中,避免重复:

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
result = []

for x in a:
    if x in b and x not in result:
        result.append(x)
print(result)

如果你需要最终结果的顺序和元素在a中首次出现的顺序一致,选这个方案即可。

两种方案最终输出的无重复共同元素都是[1, 2, 3, 5, 8, 13]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:09:03