python - python中的快速过滤方法

我想用 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/

相关文章:

email - 为什么 CR 和 LF 在电子邮件中一起出现如此重要?

python - 有没有一种很好的方法来拆分(可能)长的字符串而不用 Python 中的单词拆分?

flutter - 为什么 Visual Studio Code 中的代码文本没有颜色?

.net - 如何在 .NET 中替换“

c++ - assert 语句在 C++ 中不起作用

php - 如何在php中显示x天前的时间

haskell - 在 'let' 表达式中使用 'if'

c - 如何在 yocto 中编译一个基本的 c 文件

perl - 如何在 Perl 中将本地时间转换为 Unix 时间戳?

arrays - 在 C 中,是否可以创建没有 '\0(null)' 的字符串?