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

标签 python list sorting

我有两个列表:

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/

相关文章:

python - 在python中拆分大括号分组的字符串

python - 根据组编号将数组数组排序

javascript - SomeArray.sort ( function() { ... } ) 语句背后的逻辑是什么?

python - docker 中的 celery worker 将无法获得正确的消息代理

python - 如何使用 Python 将文件压缩为受密码保护的存档

python - 使用django-audiofield,django-storages,boto将音频文件上传到s3。 django-storages这个后端不支持绝对路径错误

html - 在 ion-list 中滚动换行文本

c - C中参数数量可变的函数的奇怪行为

java - 向按频率排序的数组中插入一个元素,然后再次按频率对数组进行排序

algorithm - 奇偶分离,保序,O(1)空间,O(N)时间复杂度