我需要在Python中比较两个列表,并且我知道使用set
命令来查找类似的项目,但是我可以使用另一个命令来自动比较它们,而不是必须编写代码它?
我想找到每个项目中没有的项目。说清单一如下:
[1, 2, 3, 4, 5, 6]
和列表二是:
[1, 2, 3, 4, 6]
我想发现列表中缺少5
,希望通过命令,但我知道如何循环比较。
答案 0 :(得分:57)
docs是一个很好的起点。以下是一些示例,可帮助您确定如何比较集合。
要查找交集(两个集合中的项目):
>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a & b
set([4, 5, 6])
要查找差异(仅在一组中的项目):
>>> 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])
要查找对称差异(在一个或另一个中,但不是两者中的项目):
>>> 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])
希望有所帮助。
答案 1 :(得分:35)
看起来你需要对称差异:
a = [1,2,3]
b = [3,4,5]
print(set(a)^set(b))
>>> [1,2,4,5]
答案 2 :(得分: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]