【发布时间】:2011-11-26 13:55:22
【问题描述】:
我的教授写了这个中值函数,我不是很理解。有人可以解释一下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] 不是浮点数索引吗?我没有得到这个所有的方式?任何比我更好的解释都非常感谢。
【问题讨论】:
-
这段代码对我来说似乎不正确。
-
请这样标记家庭作业。谢谢。
-
@samack:不清楚它是的功课。理解您的教授所写的内容与被要求在作业中解释它不同......我认为这个问题没有任何问题。
-
len(x)/2返回一个整数,因为len(x)和2都是整数。 -
@eryksun 我很抱歉没有使用'//' 运算符,只做了 3 周。