首页 > 解决方案 > 从大型 Python 列表中删除大量元素,同时保留元素的顺序

问题描述

假设我有两个列表,每个列表有 100,000 个元素,我想找到集合差异但保持元素的顺序。例子:

A = [10, 1, 30, 4, 5, 6]
B = [4, 1, 100]

所需的输出:

AB = [10, 30, 5, 6]

set(A).difference(set(B))正在生产[10, 5, 6, 30](注意它如何不保留 中的顺序A)并且列表理解需要一些时间(我认为这是因为in操作员)。

标签: pythonpython-3.xlist

解决方案


获得设置差异后,您可以将其与原始列表顺序进行比较,然后相应地保存结果

A = [10, 1, 30, 4, 5, 6]
B = [4, 1, 100]
C = set(A).difference(set(B))
result = [item for item in A if item in C]

输出

[10, 30, 5, 6]  

推荐阅读