python中獲取中位數的兩種方法


普通方法:

對列表進行排序,然后根據長度為奇數或者偶數的不同情況計算中位數

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。

當結果為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))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM