我想用 python 脚本中任何最快的方法过滤两个列表。为此,我使用了内置的 filter()
方法。但是它很慢并且花费了太多时间,因为我有很大的列表,我认为每个列表中的项目超过 500 万个,或者可能更多。
我不知道我将如何做到。请如果有人有想法或为它编写小功能。
最佳答案
也许您的列表太大,无法放入内存,您会遇到 thrashing . 如果源在文件中,则不需要一次将整个列表全部存入内存。尝试使用 itertools ,例如:
from itertools import ifilter
def is_important(s):
return len(s)>10
filtered_list = ifilter(is_important, open('mylist.txt'))
请注意,ifilter 返回一个迭代器,该迭代器速度快且内存效率高。
Generator Tricks是 David M. Beazley 的教程,教授生成器的一些有趣用途。
https://stackoverflow.com/questions/200373/