我的教授写了这个中值函数,我不太理解。有人可以解释一下关于i = len(list)/2
和声明median = avg()
的部分吗?else
def avg_list(numbers):
sum = 0
for num in numbers:
sum += num
avg = float(sum)/len(numbers)
print avg
def median(list):
list.sort()
if len(list)%2 == 0:
#have to take avg of middle two
i = len(list)/2
median = avg()
else:
#find the middle (remembering that lists start at 0)
i = len(list)/2
median = list
return median
从我看到的一个例子中添加,对于偶数列表长度:
def median(s):
i = len(s)
if not i%2:
return (s[(i/2)-1]+s[i/2])/2.0
return s[i/2]
这很好用,但我不明白最后一个return s[i/2]
?
对于奇数列表长度:
x = [1,2,5,2,3,763,234,23,1,234,21,3,2134,23,54]
median = sorted(x)[len(x)/2]
由于x
列表长度为奇数,所以不是[len(x)/2]
浮点数索引吗?我没有得到这个所有的方式?任何比我更好的解释都非常感谢。