从一个列表中移除另一个列表

9 投票
8 回答
11866 浏览
提问于 2025-04-17 11:53

在Python(2.7)中,我们可以这样做:

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

但是我们不能直接做 a - b。

因为Python似乎对几乎所有事情都有很酷的解决方案,你觉得用什么方式来实现 a - b 是最符合Python风格的呢?

还有一个类似的问题是关于字典的,字典既不能做 a + b,也不能做 a - b,其中 a 和 b 都是字典。谢谢。

8 个回答

3

我建议你试试这个写法:[x for x in a if a not in b]

7

我会这样做:

>>> a = [1, 2, 3]
>>> b = [2, 3]
>>> filter(lambda x: x not in b, a)
[1]

或者使用列表推导式

[x for x in a if x not in b]

字典也可以用同样的方法来处理。

集合有定义的运算符 - 以及方法 differencesymmetric_difference。如果你打算频繁使用这些操作,建议使用集合而不是列表或字典。

15

你可以使用集合来实现这个功能:

>>> s = set([1,2,3] + [4,5])
>>> s - set([4, 5])
{1, 2, 3}

主要的区别是,集合里不能有重复的元素。

撰写回答