def median (lst):
lst.sort()
if len(lst) % 2==0:
print sum(lst[len(lst)-1:len(lst)])
else:
print sum(len(lst)/2)
median([4, 5, 5, 4,2,5,6,9,10])
错误发生在:print sum(len(lst)/2)
TypeError: 'int' object is not iterable
为什么不起作用?
答案 0 :(得分:3)
您需要将print sum(len(lst)/2)
替换为:
print lst[len(lst) / 2]
因为你想要的是采取列表的中间元素。错误的是sum
不在数字列表上,而是在数字上。如果您想使用总和表示法,您可以执行以下操作:
print sum([lst[len(lst)//2]])
表示将数字包含在列表中。
答案 1 :(得分:0)
Why not use the built-in function?
>>> from statistics import median
>>> median([1, 3, 5])
above taken from this post: Median code explanation
or, if you must do it the hard way:
def median(a):
ordered = sorted(a)
length = len(a)
return float((ordered[length/2] + ordered[-(length+1)/2]))/2
Also taken from the same post...