Python 3.4,查找列表的中位数

时间:2015-07-12 02:54:44

标签: python-3.x

def median(L):

length = len(L)

L.sort()
print 'List = ', L

if (length % 2 == 1):       #Length is odd

    index = math.ceil(length / 2)
    index = int(index)

    for i in range(0, length + 1):
        if i  == index:
            print 'Median = ', L[i]
            print 'Median = %.2f' % (L[i])
            return L[i]

elif (length % 2 == 0):                 #Length is even

    index = math.floor(length / 2)
    lower = int(index) - 1
    upper = int(index)

    print L[lower]
    print L[upper]

    median = ((L[upper] + L[lower]) / 2)
    median = float(median)
    print 'Median = %.2f' % (median)
    return median

中位数(L)

Python 3.4

假设我使用此列表 L = [98,75,92,87,89,90,92,87]

当我对列表进行排序并找到两个中间数字时,我得到89和90 ...但是,我尝试取这两个数字的平均值

中位数=((L [上] + L [下])/ 2)

并返回89.00而不是89.50

任何想法如何解决这个问题? 感谢

1 个答案:

答案 0 :(得分:1)

通过float(L[upper])+float(L[lower])

将两个数字L [upper]和L [lower]转换为float