python - 从大型 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
操作员)。
解决方案
获得设置差异后,您可以将其与原始列表顺序进行比较,然后相应地保存结果
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]
推荐阅读
- python - 用最后可用的像素(背景)拉伸图像
- ubuntu - 在子目录中找不到 Ubuntu 404
- java - 如何用 Mono 对 Flux 进行平面映射?
- data-structures - 选择什么选择大哦符号
- angular-material - 如何将组件的导出类放入角材料中
- powershell - plink 与 powershell 命令不起作用
- java - Mongodb 3.4 的身份验证未使用 java 正确验证身份验证,即使我提供了错误的凭据,它已连接到数据库
- php - SimpleSAMLphp 配置错误配置错误
- angular - 角材料:尽管使用了正确的方法,但未显示垫子错误
- opencv - 在UML图中检测矩形轮廓不准确,openCV