2016-04-22 102 views
0

試圖找到中位數,但不斷獲取列表索引必須是整數,而不是浮點錯誤,我不知道該怎麼辦。錯誤:列表索引必須是整數,而不是中位數浮點數

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將返回一個浮點數,如果len(data)是奇數。使用//而不是/來獲得整數結果。

+0

我得到當我嘗試的是:median_val =(A + B)/ 2 類型錯誤:不支持的操作數類型(個),/: '元組'和'int' –

+0

@Terr_code你的值'a'是一個'tuple'嘗試'print(a,type(a))'來證實這一點。 –

+0

@ M.T數據(gymnastics_school ='南部GA的體操運動員',participant_name ='Patrick J.',all_around_points_earned = 54.801)是我如何解決這個問題/ –

0

statistics module是標準庫的一部分:

import statistics 

data = [1, 2, 3, 4] 
statistics.median(data) 
相關問題