Python@TW: 會眾| IRC| Planet| 郵件列表| 聯絡我們
修訂版 4 和 5 的差異如下:
2007-02-26 12:13:51 修訂第 4 版
大小: 1244
編輯者: Thinker
說明:
2009-04-01 04:14:22 修訂第 5 版
大小: 1246
編輯者: localhost
說明: converted to 1.6 markup
這個顏色代表刪除的 這個顏色代表增加的
行號 1: 行號 1:
舉例,計算 [http://en.wikipedia.org/wiki/Standard_deviation standard deviation] 舉例,計算 [[http://en.wikipedia.org/wiki/Standard_deviation|standard deviation]]

舉例,計算 standard deviation

   1 import math
   2 def standard_deviation(data):
   3     return math.sqrt(sum([d * d for d in data]) / len(data) - ((sum(data) / len(data)) ** 2))

還不如

   1 import math
   2 def standard_deviation(data):
   3     mean = sum(data) / len(data)
   4     pow2_mean = sum([d * d for d in data]) / len(data)
   5     variance = pow2_mean - (mean ** 2)
   6     return math.sqrt(variance)

假設之前沒看過 standard deviation 公式,雖然前面的 implementation 較簡短,但後面的方式,對於讀者而言,更容易理解。這也是為什麼 Sparse is better than dense 後面是接著 readability count 這一句,閱讀性必需擺在優先,除非該段程式碼有特別的 performance 需求。就算程式碼只有自己會看,但又如何保證自己回頭看時,不會忘了什麼是 standard_deviation ?把效能問題丟給 compiler 吧! 除非 compiler 無法產出可接受的效能。

另外,在 debug 時,如果公式的某一項出錯時,前面的寫法不容易 debug 。而後面的方式,因為每一項式都成獨立的一行,容易用 debugger 檢視,或者用 alert message 也很方便。

The Zen Of Python/Sparse is better than dense (上次是 localhost 在 2009-04-01 04:14:22 編輯的)