2024-06-16 18:52:43 发布
网友
我有两个清单:
ordered = ['salat', 'baguette', 'burger', 'pizza'] unordered = ['pizza', 'burger']
现在,我想从有序列表中删除所有不在无序列表中的条目,同时保留排序。在
我该怎么做?在
像这样:
ordered = list(filter(lambda x: x not in unordered, ordered))
如果使用Python<;3,list函数是不必要的。在
list
ordered = [item for item in ordered if item in unordered]
此方法使用Python的列表理解功能在旧列表的基础上创建一个新列表。在
对于大量数据,如人们在评论中所建议的那样,首先将无序的列表变成一个集合,会在性能上产生巨大的差异,例如:
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]
像这样:
如果使用Python<;3,
list
函数是不必要的。在此方法使用Python的列表理解功能在旧列表的基础上创建一个新列表。在
对于大量数据,如人们在评论中所建议的那样,首先将无序的列表变成一个集合,会在性能上产生巨大的差异,例如:
^{pr2}$基准测试!
对于10/2的项目,时间几乎相同,所以无论数据大小如何,最好始终使用集合。在
最好使用一个集合来测试成员资格,如下所示:
相关问题 更多 >
编程相关推荐