如何比较 python 中的两个列表并返回匹配项

新手上路,请多包涵

我想获取两个列表并找到出现在两个列表中的值。

 a = [1, 2, 3, 4, 5]
b = [9, 8, 7, 6, 5]

returnMatches(a, b)

例如,将返回 [5]

原文由 tehryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 717
2 个回答

不是最有效的方法,但到目前为止最明显的方法是:

 >>> a = [1, 2, 3, 4, 5]
>>> b = [9, 8, 7, 6, 5]
>>> set(a) & set(b)
{5}

如果顺序很重要,你可以用这样的列表理解来做到这一点:

 >>> [i for i, j in zip(a, b) if i == j]
[5]

(仅适用于大小相等的列表,这意味着顺序重要性)。

原文由 SilentGhost 发布,翻译遵循 CC BY-SA 2.5 许可协议

使用 set.intersection() ,它快速且可读。

 >>> set(a).intersection(b)
set([5])

原文由 lutz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题