Skip to main content
 首页 » 编程设计

python之Python 中返回不在第二个列表中的列表元素的更有效方法是什么

2025年05月04日10飞鱼

在 python 中有更快的方法吗?

[f for f in list_1 if not f in list_2] 

list_1 和 list_2 都包含大约 120.000 个字符串。生成新列表大约需要 4 分钟。

请您参考如下方法:

如果将 list_2 放入 set 中,它应该会使包含检查更快:

s = set(list_2) 
[f for f in list_1 if not f in s] 

这是因为 x in list 是 O(n) 检查,而 x in set 是常数时间。

另一种方法是使用集差:

list(set(list_1).difference(set(list_2))) 

但是,这可能不会比第一种方法快 - 而且,它会从 list_1 中删除您可能不想要的重复项。