我有两个列表:
ordered = ['salat', 'baguette', 'burger', 'pizza']
unordered = ['pizza', 'burger']
现在我想要从有序列表中移除所有不在无序列表中的条目,同时保持排序。请问如何做到这点?
我有两个列表:
ordered = ['salat', 'baguette', 'burger', 'pizza']
unordered = ['pizza', 'burger']
ordered = [item for item in ordered if item in unordered]
unordered = set(unordered)
有序列表: 5000个项目,无序列表: 1000个项目
没有使用set的时间为0.09561秒
使用了set后的时间为0.00042秒
对于10/2个项目,时间几乎相同,因此最好始终使用set,无论数据大小如何。
unordered
转换为set
可能会提高运行时效率。 - inspectorG4dget
ordered = ['salat', 'baguette', 'burger', 'pizza']
unordered = ['pizza', 'burger']
unord = set(unordered)
ordered = [e for e in ordered if e in unord]
类似这样的:
ordered = list(filter(lambda x: x not in unordered, ordered))
如果使用 Python <3,则list
函数是不必要的。