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

列表推导式中引用当前列表:如何单行实现无重复交集?

解决两个列表的无重复交集单行代码问题

嘿,这问题我熟!你想要的是同时存在于列表a和b中且无重复的元素,还要用单行代码实现对吧?给你几个靠谱的单行方案:

方案1:利用集合自动去重(简洁高效)

集合天生自带元素唯一性,还支持交集操作,一行就能搞定:

list2 = list(set(a) & set(b))

或者用更直观的intersection方法写:

list2 = list(set(a).intersection(set(b)))

这两种写法都会先把两个列表转成集合,取它们的交集后再转回列表,自动帮你过滤掉所有重复项。

方案2:保留原列表元素顺序(如果需要)

要是你希望结果里元素的顺序和它们在列表a中第一次出现的顺序一致,那可以用这个单行写法:

list2 = list(dict.fromkeys(x for x in a if x in b))

dict.fromkeys会自动保留第一个出现的键(也就是元素),后面重复的会被直接忽略,既满足去重需求,又能维持原列表的元素顺序。

拿你的示例列表测试:

  • 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]

方案1的结果(顺序可能因集合实现略有不同):[1, 2, 3, 5, 8, 13]
方案2的结果:[1, 2, 3, 5, 8, 13](和a里元素第一次出现的顺序完全一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:38:37