2016-11-02 189 views
-2

我嘗試計算Python 2.7中的一個'奇怪'列表平均值。 這份名單是:查找列表的平均值

list = ['', '0.00066', '0.00066', '0.00066', '0.00066'] 

我用先得到款項的CMD:reduce(lambda x, y: x + y, list) 但我得到一個錯誤的返回:列表的總和:0.000660.000660.000660.00066

請指點如何獲取列表的平均。

+0

您必須將它們轉換爲浮動... – Li357

+0

感謝Andrew,只是爲了確認,您的意思是先浮動列表中的每個項目? –

+0

在你的lambda中,你正在串接,因爲你有字符串。做'float(x)+ float(y)'或者將float映射到每個元素。確保過濾出第一個元素,因爲它是無效的浮點數 – Li357

回答

0

您需要將字符串轉換爲浮動,並使用空字符串來引發錯誤。幸運的是,您可以在轉換之前濾除空白。

>>> list = ['', '0.00066', '0.00066', '0.00066', '0.00066'] 
>>> reduce(lambda x, y: x + y, (float(i) for i in list if i)) 
0.00264 

順便說一句,python有功能版本的操作符,你可以在這種情況下使用。當然,sum已經是專門用於添加東西的。

>>> import operator 
>>> reduce(operator.add, (float(i) for i in list if i)) 
0.00264 
>>> sum(float(i) for i in list if i) 
0.00264