从一个列表中移除另一个列表
在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]
字典也可以用同样的方法来处理。
集合有定义的运算符 -
以及方法 difference
和 symmetric_difference
。如果你打算频繁使用这些操作,建议使用集合而不是列表或字典。
15
你可以使用集合来实现这个功能:
>>> s = set([1,2,3] + [4,5])
>>> s - set([4, 5])
{1, 2, 3}
主要的区别是,集合里不能有重复的元素。