计算列表差异
在Python中,计算两个列表之间的差异最好的方法是什么?
举个例子
A = [1,2,3,4]
B = [2,5]
A - B = [1,3,4]
B - A = [5]
17 个回答
73
你可以这样做:
list(set(A)-set(B))
还有:
list(set(B)-set(A))
222
如果你不在乎里面的东西顺序或者重复,可以用 set
。如果你在乎顺序或者想要重复的东西,那就用 列表推导式:
>>> def diff(first, second):
second = set(second)
return [item for item in first if item not in second]
>>> diff(A, B)
[1, 3, 4]
>>> diff(B, A)
[5]
>>>
461
如果顺序不重要,你可以直接计算集合的差集:
>>> set([1,2,3,4]) - set([2,5])
set([1, 4, 3])
>>> set([2,5]) - set([1,2,3,4])
set([5])