python中獲取中位數

普通方法:
spa

  對列表進行排序,而後根據長度爲奇數或者偶數的不一樣狀況計算中位數
code

def huahua(x): length = len(x) print(length) x.sort() print(x) if (length % 2)== 1: z=length // 2 y = x[z] else: y = (x[length//2]+x[length//2-1])/2
    return y l = [1,2,3,7,5,6,4,9,8,10] print(huahua(l))

最佳方法:

  採用取反的方式來求中位數,排序後結果爲l=[1,2,3,4,5,6,7,8,9,10],長度爲10,half=10//2=5,x[5]爲列表的第六位數,5的取反數爲-6,x[-6]其實是對列表進行反向查找,爲列表中的第五位數,長度爲偶數10時中值5+6/2=5.5。blog

  當結果爲l=[1,2,3,4,5,6,7,8,9]時,長度爲9,half=9//2=4,x[4]爲列表的第五位數,4取反爲-5,x[-5]在列表中是正向反向查找中的第五位數,因此x[4]==x[-5],中位數就爲x[4]或者x[-5]。排序

def median(data): data.sort() half = len(data) // 2
    return (data[half] + data[~half])/2 l = [1,2,3,7,5,6,4,9,8,10] if __name__ == '__main__': print(median(l))
相關文章
相關標籤/搜索