2016-04-22 15 views
0

中央値を見つけようとしますがリストインデックスを取得し続けるのは浮動小数点エラーではなく整数値でなければなりません。 len(data)が奇数の場合エラー:リストインデックスは整数でなければならず、中央値の場合はfloatではありません

sorted_data = sorted(data, key=lambda d:d.all_around_points_earned) 
if len(data)%2==0: 
    a = sorted_data[len(data)/2] 
    b = sorted_data[len(data)/2-1] 
    median_val = (a+b)/2 
else: 
    median_val = sorted_data[(len(data)-1)/2] 
print(median_val) # median val 

答えて

1

あなたがのpython3を使用している場合は、len(data)/2はあなたにfloatを返します。整数結果を得るには/の代わりに//を使用してください。

+0

私はしようとすると、私が手に:median_val =(A + B)/ 2 はTypeError:/ためのサポートされていないオペランドのタイプ(S): 'タプル' を'int' –

+0

@Terr_codeあなたの値 'a'は'タプル 'です。これを確認するには' print(a、type(a)) 'を試してください。 –

+0

@ M.Tデータ(gymnastics_school = '南部GAの体操選手、participant_name ='パトリックJ. '、all_around_points_earned = 54.801)は、 –

0

statistics moduleは、標準ライブラリの一部です:

import statistics 

data = [1, 2, 3, 4] 
statistics.median(data) 
関連する問題