分析此代码显示大部分时间花在日志操作上。 还有另一种方法可以在Python 3中编写它以提高效率吗?用列表推导替换循环实际上效率较低,因为lambdas也是如此。
def log_total(data):
total = 0.0
log = log(data)
for i in range(10000):
total += log/(i+1)
return total
谢谢!
答案 0 :(得分:9)
我会将log
从你的总和中计算出来并缓存你的总和:
harmonic_series = sum(1. / i for i in range(1, 10001)) # Thanks, @mgilson
def log_total(data):
return log(data) * harmonic_series
您还可以使用PyPy来加快速度。
答案 1 :(得分:0)
可以在线写lambda
,如下所示:
total = lambda data: log(data) * sum(1.0 / i for i in xrange(1, 10001))
我使用了Python 2.7.3
。