在python中有更快的方法吗?
[f for f in list_1 if not f in list_2]
Run Code Online (Sandbox Code Playgroud)
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]
Run Code Online (Sandbox Code Playgroud)
这是因为x in list是O(n)检查,x in set而是恒定时间.
另一种方法是使用set-difference:
list(set(list_1).difference(set(list_2)))
Run Code Online (Sandbox Code Playgroud)
但是,这可能不会比第一种方式更快 - 而且,它将消除list_1您可能不想要的重复项.
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |