Python:从有序列表中删除不在无序lis中的条目

2024-06-16 18:52:43 发布

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

我有两个清单:

ordered = ['salat', 'baguette', 'burger', 'pizza']
unordered = ['pizza', 'burger']

现在,我想从有序列表中删除所有不在无序列表中的条目,同时保留排序。在

我该怎么做?在


Tags: 列表排序条目burger无序ordered序列表pizza
3条回答

像这样:

ordered = list(filter(lambda x: x not in unordered, ordered))

如果使用Python<;3,list函数是不必要的。在

ordered = [item for item in ordered if item in unordered]

此方法使用Python的列表理解功能在旧列表的基础上创建一个新列表。在

对于大量数据,如人们在评论中所建议的那样,首先将无序的列表变成一个集合,会在性能上产生巨大的差异,例如:

^{pr2}$

基准测试!

ordered: 5000 items, unordered: 1000 items
0.09561s without set
0.00042s with set

对于10/2的项目,时间几乎相同,所以无论数据大小如何,最好始终使用集合。在

最好使用一个集合来测试成员资格,如下所示:

ordered = ['salat', 'baguette', 'burger', 'pizza']
unordered = ['pizza', 'burger']

unord = set(unordered)
ordered = [e for e in ordered if e in unord]

相关问题 更多 >