我在我的Python代码使用该循环的循环:简化蟒蛇
final_fun=[]
for i_base in xrange(n_base):
final_fun.append(sum(fun[:,i_base])/n_ci)
,我想知道我怎么可以简化这个循环?如果我简化这个循环,我的程序会更快吗?一般来说,我知道如何简化这个,但在这里我被追加阻止!
我在我的Python代码使用该循环的循环:简化蟒蛇
final_fun=[]
for i_base in xrange(n_base):
final_fun.append(sum(fun[:,i_base])/n_ci)
,我想知道我怎么可以简化这个循环?如果我简化这个循环,我的程序会更快吗?一般来说,我知道如何简化这个,但在这里我被追加阻止!
使用列表解析。它更快,更干净。解释器可以通过for循环减慢很多,并且通过简单地重新排列语法就没有任何损失。
有关更多详细信息,请参见this explanation。
final_fun = [sum(fun[:,i_base])/n_ci for i_base in xrange(n_base)]
看来fun
是一个二维的NumPy数组。在这种情况下,您可以完全避免了Python循环简化和加速代码显著:
final_fun = fun.sum(axis=0)/n_ci
你会最终有一个NumPy的阵列,而不是一个名单,但机会是,这是你想要的呢。
+1。感谢您关注已经回答的问题。 – 2012-08-01 15:53:21
这个*可能会变得很复杂,有时它很适合有一个for循环 – 2012-08-01 15:30:37
for循环通常在python中比较慢。特别是如果你使用多个for循环,列表推导就是为了更有效地处理这种事情而设计的。 – 2012-08-01 15:31:55
谢谢!我在开始时尝试了这个,但有一些错误! – PanAkry 2012-08-01 15:33:06