Python中求和(f(x))的最快方法

2024-05-08 00:56:27 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中查找函数调用结果的总和的最快方法是什么(不需要进行并行处理)?在

假设xlist是一个值的列表,其目的是用f(x)对每个值进行转换并求和。目前(记住“平淡总是更好”)我有:

sum([f(x) for x in xlist])

这很好,但是我的xlist相当大(~20000个浮点值),而且在程序执行期间,这个和被调用了几百万次,消耗了大部分的时间资源。有没有一种更有效的方法来实现它?在

我不介意添加C++的包含或其他任何你能想到的方法,但是不想为了它而改变整个程序的结构…在


Tags: 方法in程序目的列表for时间资源
2条回答

去掉方括号就可以了。在

^{1}$

这将对一个生成器表达式进行求和,并且无需首先创建存储在内存中的列表。相反,它将在遍历生成器时对元素求和。在

在Python3中,使用map(Python2中的itertools.imap)会更快一些。在

^{pr2}$

您可以做的进一步优化(因为sum将被多次调用)是消除使用.运算符的开销。在

from itertools import imap
sum(imap(f, xlist))

我推荐一种类似Volatility's.的方法

但也使用Memoization decorator。(只有在期望多个相同值时才真正有用)

^{1}$

来源:Memodict

相关问题 更多 >