保留ord时设置减法

2024-04-20 14:03:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道用集减法我可以做到以下几点:

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]

Tags: l1顺序事情removeotherkeepsetordering
1条回答
网友
1楼 · 发布于 2024-04-20 14:03:57
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),因此仍然有一个有效的解决方案。你知道吗

相关问题 更多 >