2016-11-02 18 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

ありがとうアンドリュー、ちょうど確認するために、あなたは最初にリストの各項目を浮動させることを意味しますか?あなたのラムダに –

+0

という文字列があるので、連結を行っています。 '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 
関連する問題