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

38 投票
3 回答
47034 浏览
提问于 2025-04-17 19:22

我想在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]

撰写回答