Python:列表元素比较的问题

时间:2014-07-11 18:45:16

标签: python list comparison

任务是定义一个带参数x的函数,其中x是一个整数列表。函数应该打印出其中项目的中值。我的功能总是返回None,我试图解决它,但经过多次尝试后我的想法不合适。 代码:

def median(x):
    x = sorted(x)
    med_val = 0
    if len(x) % 2.0 == 0:
        for i in x:
            if len(x[:i]) == len(x[i:]) + 1:
                return x[i]
    else:
        for i in x:
            if len(x[:i + 1]) == len(x[i: + 1]) + 1:
                return (x[i] + x[i + 1]) / 2
print (median([1, 4, 2, 6, 8]))

任何想法如何使其发挥作用?

2 个答案:

答案 0 :(得分:1)

在您的方法中,将print语句替换为return expression。在你的函数调用中,执行:

print(median(list))

PS:最好不要在python中使用list作为变量名。

答案 1 :(得分:0)

这是一种略有不同的方法:

def median(x):
    x = sorted(x)
    middle_index = float(len(x)/2.0) # this 2.0 part is very important
    if middle_index % 2 == 0: #check if it's even
        med_val = float((x[int(middle_index)]+x[int(middle_index-1)])/2) # take the average of the 2 middle values if so
    else: med_val = x[int(middle_index)] #otherwise, select the center value    

    return med_val #return median

lists = [[2, 1, 4, 6], [9,1,1,9,3], [1, 4, 2, 6, 8]]
for item in lists:
    print median(item) 

In:  [2, 1, 4, 6]
Out:  3.0
In:  [9, 1, 1, 9, 3]
Out:  3
In:  [1, 4, 2, 6, 8]
Out:  4