我在我的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