Python - 使用'set'找出列表中的不同项
我想在Python中比较两个列表,我知道可以用set
命令来找出相同的项目,但我想知道有没有其他命令可以自动比较这两个列表,而不需要我自己写代码去实现。
我想找出每个列表中缺少的项目。比如,列表一是这样的:
[1, 2, 3, 4, 5, 6]
而列表二是:
[1, 2, 3, 4, 6]
我想找出5
这个数字在列表中缺失了,希望能通过一个命令来实现,不过我知道怎么通过循环来比较。
3 个回答
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]
62
文档是一个很好的起点。这里有几个例子,可能会帮助你了解如何比较你的集合。
要找出交集(两个集合中都有的项目):
>>> 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])
38
看起来你需要用到对称差集:
a = [1,2,3]
b = [3,4,5]
print(set(a)^set(b))
>>> [1,2,4,5]