我想减去两个列表并阅读此问题Remove all the elements that occur in one list from another
# a-b
def subb(a,b):
return [i for i in a if i not in b]
print subb([1,2,1,2],[1,2])
但结果是空列表,这不是我想要的,我认为它应该是[1,2]
,所以我改变了我的代码,:
def subb(a,b):
for i in b:
if i in a:
a.remove(i)
return a
现在我想要一个Pythonic方法用一个简单的表达式替换这个函数,这样我就可以轻松地在函数中使用结果。这可能吗?
感谢。
答案 0 :(得分:1)
如果我不误解你的意思,这就是你想要的:
x, y = [1,2,1,2], [1,2]
print [j for j in x if not j in y or y.remove(j)]
输出:
[1, 2]
如果您希望y
的值保持不变,可以尝试使用deepcopy
,
from copy import deepcopy
yy = deepcopy(y)
print [j for j in x if not j in yy or yy.remove(j)]