3

分析此代码显示大部分时间都花在了日志操作上。是否有另一种方法可以在 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

谢谢!

4

2 回答 2

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来加快速度。

于 2012-12-23T03:40:36.640 回答
0

可以用lambdain在线写,像这样:

total = lambda data: log(data) * sum(1.0 / i for i in xrange(1, 10001))

我用过Python 2.7.3

于 2012-12-23T04:53:58.390 回答