如果我有一个包含1000万个对象的列表,我该如何快速过滤列表。通过列表理解完成迭代大约需要4-5秒。在python中是否有任何有效的数据结构或库?或者python不适合大型数据集?
答案 0 :(得分:3)
如果你有统一的数字类型和如果速度是你的主要目标(并且你想使用python),请使用Numpy数组。
答案 1 :(得分:2)
Itertools旨在实现高效循环。特别是,您可能会发现ifilter
适合您的目的。迭代大型数据结构总是很昂贵,但如果你只需要一些数据,懒惰的评估可以帮助很多。
你也可以尝试使用生成器表达式,它们通常与列表推导对应物相同(虽然用法可能不同)或生成器,它们也具有延迟评估的好处。
答案 2 :(得分:0)
即使在非常原始的整数数组上使用内置函数,也需要几秒钟才能在我的计算机上进行评估。
>>> l=[1]*10000000
>>> s=filter(lambda x:True,l)
我建议您使用其他方法,例如使用Numpy或使用generators进行延迟评估和/或使用迭代模块itertools