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