如何找到列表交集?

新手上路,请多包涵
a = [1,2,3,4,5]
b = [1,3,5,6]
c = a and b
print c

实际输出: [1,3,5,6] 预期输出: [1,3,5]

我们如何在两个列表上实现布尔 AND 运算(列表交集)?

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

阅读 276
2 个回答

如果顺序不重要并且您不需要担心重复,那么您可以使用集合交集:

 >>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> list(set(a) & set(b))
[1, 3, 5]

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

使用列表理解对我来说是一个非常明显的。不确定性能,但至少事情会保留在列表中。

 [x for x in a if x in b]

或者“如果 X 值在 B 中,则 A 中的所有 x 值”。

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

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