优化Python代码以提高效率

时间:2012-12-23 03:38:55

标签: python python-3.x

分析此代码显示大部分时间花在日志操作上。 还有另一种方法可以在Python 3中编写它以提高效率吗?用列表推导替换循环实际上效率较低,因为lambdas也是如此。

def log_total(data): 
    total = 0.0   
    log = log(data) 
    for i in range(10000): 
        total += log/(i+1)  
    return total

谢谢!

2 个答案:

答案 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