我查找了与此类似的帖子,人们发布的示例向我抛出了与我自己的版本相同的错误。我不断收到错误消息“列表索引必须是整数,而不是浮点数”。我相信获得中位数的逻辑很好,但我不知道该如何解决。我知道发生这种情况是因为5/2 = 2.5,这不是有效的索引,但是在这种情况下,我应该如何获得偶数列表的中位数?
我的短代码是:
def median(lst):
lst.sort()
a = len(lst)
if a % 2 == 0:
b = lst[len(lst)/2]
c = lst[(len(lst)/2)-1]
d = (b + c) / 2
return d
if a % 2 > 0:
return lst[len(lst)/2]
myList = [1,8,10,11,5]
myList2 = [10,5,7,2,1,8]
print(median(myList))
print(median(myList2))
我试图这样做来修复它,但仍然出现相同的错误:
def median(list):
list.sort()
a = float(len(list))
if a % 2 == 0:
b = float(list[len(list)/2])
c = float(list[(len(list)/2)-1])
d = (b + c) / 2.0
return float(d)
if a % 2 > 0:
return float(list[len(list)/2])
myList = [1,8,10,11,5]
myList2 = [10,5,7,2,1,8]
print(median(myList))
print(median(myList2))
异常是由在Python 3.x/
上返回的运算符引起的float
。//
计算索引时,请使用整数除法:
>>> 2 / 1
2.0
>>> 2 // 1
2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句