如何找到列表交集?

新手上路,请多包涵
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 许可协议

阅读 275
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 许可协议

推荐问题