在Python中查找函数调用结果的总和的最快方法是什么(不需要进行并行处理)?在
假设xlist
是一个值的列表,其目的是用f(x)
对每个值进行转换并求和。目前(记住“平淡总是更好”)我有:
sum([f(x) for x in xlist])
这很好,但是我的xlist
相当大(~20000个浮点值),而且在程序执行期间,这个和被调用了几百万次,消耗了大部分的时间资源。有没有一种更有效的方法来实现它?在
我不介意添加C++的包含或其他任何你能想到的方法,但是不想为了它而改变整个程序的结构…在
Tags:
去掉方括号就可以了。在
^{1}$这将对一个生成器表达式进行求和,并且无需首先创建存储在内存中的列表。相反,它将在遍历生成器时对元素求和。在
在Python3中,使用
^{pr2}$map
(Python2中的itertools.imap
)会更快一些。在您可以做的进一步优化(因为
sum
将被多次调用)是消除使用.
运算符的开销。在我推荐一种类似Volatility's.的方法
但也使用Memoization decorator。(只有在期望多个相同值时才真正有用)
^{1}$来源:Memodict
相关问题 更多 >
编程相关推荐