如何找到列表交集?
a = [1,2,3,4,5]
b = [1,3,5,6]
c = a and b
print c
实际输出: [1,3,5,6]
期望输出: [1,3,5]
我们怎么才能在两个列表上实现布尔与操作(也就是找出它们的交集)呢?
17 个回答
119
如果你把两个列表中较大的那个转换成一个集合,你就可以用 intersection()
方法来找到这个集合和任何可迭代对象的交集。
a = [1,2,3,4,5]
b = [1,3,5,6]
set(a).intersection(b)
200
使用列表推导式对我来说是个很明显的选择。我不太确定性能如何,但至少结果还是列表。
[x for x in a if x in b]
或者说“所有在A里的x值,只要这个x值也在B里”。
710
如果顺序不重要,而且你不需要担心重复的情况,那么你可以使用集合交集的方法:
>>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> list(set(a) & set(b))
[1, 3, 5]