简化python中的循环

时间:2012-08-01 15:27:15

标签: python performance for-loop

我在我的python代码中使用了这个循环:

final_fun=[]
for i_base in xrange(n_base):
  final_fun.append(sum(fun[:,i_base])/n_ci)

我想知道如何简化这个循环?如果我简化这个循环,我的程序会更快吗?一般来说,我知道如何简化这个,但在这里我被追加阻止了!

2 个答案:

答案 0 :(得分:8)

使用列表推导。它更快更清洁。 for循环可以减慢解释器的速度,只需重新排列语法就不会有任何损失。

有关详细信息,请参阅this explanation

final_fun = [sum(fun[:,i_base])/n_ci for i_base in xrange(n_base)]

答案 1 :(得分:2)

似乎fun是一个二维NumPy数组。在这种情况下,您可以通过完全避免Python循环来显着简化和加速代码:

final_fun = fun.sum(axis=0) / n_ci

你最终会得到一个NumPy数组而不是一个列表,但无论如何这可能是你想要的。