从两个列表中删除相同的元素

22

可能是重复问题:
Python列表减法操作

我想从两个列表中移除相同的元素。我的意思是像这样的操作:


a=[1,2,3,4,5,6,7,8]
b=[2,4,1]
# I want the result to be like
res=[3,5,6,7,8]
有没有简单的Pythonic方法可以做到这一点?

你现在有什么了? - Rohit Jain
2个回答

49

使用集合:

res = list(set(a)^set(b))

10
请注意,这种方法会丢失两个列表中的顺序和重复项。如果 OP 不介意的话,这是一种最好的解决方案。 - Russell Borogove
3
太棒了!在这种情况下,“^”运算符的含义是什么? - fabio.sang
1
^ 在编程中表示不相交。 - Konchog
请注意,结果中包含了来自b的不常见元素。例如: a = [1,2,3,4,5],b = [1,2,8],结果为:[3,4,5,8] - Saeid Mohammadi Nejati

12

你可以使用集合,从这里了解更多信息。

print(set(a).difference(b))

1
list(set(a).difference(b)) 会生成有序列表。如果我不想要有序列表,而是想要与列表a相同的列表,只需删除共同元素。 - Hitesh
7
x = [i for i in x if i not in y] 或许是一个不错的选择。 - Hitesh
3
这并不完全回答了原帖所述的问题...但是这确实回答了我实际寻找的问题,并且是一个有用的答案。它仅返回a中不在b中的元素(OP要求在a和b中都不重复的元素)。 - G__

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接