首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中过滤/迭代非常大的列表

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

Stack Overflow用户
提问于 2011-01-26 10:16:03
回答 3查看 6.3K关注 0票数 3

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-26 10:17:20

Itertools是为高效循环而设计的。特别是,您可能会发现ifilter适合您的目的。迭代大型数据结构的开销总是很大的,但是如果一次只需要一些数据,那么惰性评估会有很大帮助。

您还可以尝试使用生成器表达式,它通常与它们的列表理解对应物相同(尽管用法可能不同)或生成器,它也具有惰性计算的好处。

票数 2
EN

Stack Overflow用户

发布于 2011-01-26 10:21:18

如果您有统一类型的数字&如果速度是您的主要目标(并且您希望使用python),那么可以使用Numpy数组。

票数 3
EN

Stack Overflow用户

发布于 2011-01-26 10:37:53

即使在一个非常原始的整数数组上使用内置函数,在我的计算机上也需要几秒钟的时间来计算。

代码语言:javascript
运行
复制
>>> l=[1]*10000000
>>> s=filter(lambda x:True,l)

我建议您使用不同的方法,比如对generators使用Numpy或惰性评估和/或使用迭代模块itertools

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4800858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档