计算列表差异

264 投票
17 回答
337451 浏览
提问于 2025-04-16 20:20

在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])

撰写回答