在保留顺序的同时设置减法

时间:2015-02-21 21:07:31

标签: python

我知道使用set减法我可以执行以下操作:

l2 = set([4,3,5,2])
l1 = set([3,8])
l2 - l1
set([2, 4, 5])

如何保持l1中的排序,我将如何做同样的事情。例如:

l2 = [4,3,5,2] 
l1 [3,8]
# remove 3, keep other ordering
l2 - l1
[4,5,2]

1 个答案:

答案 0 :(得分:1)

l1 = [4,3,5,2]
l2 = [3]
# remove 3, keep other ordering
st = set(l2)

print([x for x in l1 if x not in st])

[4, 5, 2]

只需设置l2一套,并使用in保留l1中不在st内的元素。设置查找为0(1),因此您仍然可以获得有效的解决方案。