2016-04-22 106 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) 
相关问题