我有两个列表:
ordered = ['salat', 'baguette', 'burger', 'pizza']
unordered = ['pizza', 'burger']
现在我想从有序列表中删除所有不在无序列表中的条目,同时保留顺序。
我该怎么做?
最佳答案
ordered = [item for item in ordered if item in unordered]
此方法使用 Python 的列表推导式基于旧列表创建新列表。
对于大量数据,首先将无序列表转换为集合,正如人们在评论中所建议的那样,会对性能产生巨大影响,例如:
unordered = set(unordered)
基准!
ordered: 5000 items, unordered: 1000 items
0.09561s without set
0.00042s with set
对于 10/2 项,时间几乎相同,因此无论数据大小如何,始终使用集合是很好的。
关于Python:从有序列表中删除不在无序列表中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9244768/