Python - 使用'set'查找列表中的不同项

RPi*_*ess 38 python compare

我需要在Python中比较两个列表,并且我知道使用该set命令来查找类似的项目,但是我是否可以使用另一个命令来自动比较它们,而不是必须为它编写代码?

我想找到不属于每个项目的项目.说清单一如下:

[1, 2, 3, 4, 5, 6] 
Run Code Online (Sandbox Code Playgroud)

列表二是:

[1, 2, 3, 4, 6]
Run Code Online (Sandbox Code Playgroud)

我希望找到5列表中缺少的,希望通过命令,但我知道如何循环比较.

Set*_*eth 59

文档是一个良好的开端.以下是一些示例,可帮助您确定要比较集合的方式.

要查找交集(两个集合中的项目):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a & b
set([4, 5, 6])
Run Code Online (Sandbox Code Playgroud)

要找出差异(仅在一组中的项目):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a - b
set([1, 2, 3])
>>> b - a
set([7, 8, 9])
Run Code Online (Sandbox Code Playgroud)

要查找对称差异(在一个或另一个中的项目,但不是两者):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a ^ b
set([1, 2, 3, 7, 8, 9])
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.


tif*_*fon 35

看起来你需要对称差异:

a = [1,2,3]
b = [3,4,5]

print(set(a)^set(b))


>>> [1,2,4,5]
Run Code Online (Sandbox Code Playgroud)


Fre*_*ihl 5

一个简单的列表理解

In [1]: a=[1, 2, 3, 4, 5, 6] 

In [2]: b=[1, 2, 3, 4, 6]

In [3]: [i for i in a if i not in b]
Out[3]: [5]
Run Code Online (Sandbox Code Playgroud)