过滤/迭代python中的非常大的列表

时间:2011-01-26 02:16:03

标签: python data-structures

如果我有一个包含1000万个对象的列表,我该如何快速过滤列表。通过列表理解完成迭代大约需要4-5秒。在python中是否有任何有效的数据结构或库?或者python不适合大型数据集?

3 个答案:

答案 0 :(得分:3)

如果你有统一的数字类型和如果速度是你的主要目标(并且你想使用python),请使用Numpy数组。

答案 1 :(得分:2)

Itertools旨在实现高效循环。特别是,您可能会发现ifilter适合您的目的。迭代大型数据结构总是很昂贵,但如果你只需要一些数据,懒惰的评估可以帮助很多。

你也可以尝试使用生成器表达式,它们通常与列表推导对应物相同(虽然用法可能不同)或生成器,它们也具有延迟评估的好处。

答案 2 :(得分:0)

即使在非常原始的整数数组上使用内置函数,也需要几秒钟才能在我的计算机上进行评估。

>>> l=[1]*10000000
>>> s=filter(lambda x:True,l)

我建议您使用其他方法,例如使用Numpy或使用generators进行延迟评估和/或使用迭代模块itertools