Python代碼閱讀(第28篇):計算列表中位數


Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看項目源碼

本篇閱讀的代碼實現計算列表中位數的功能。

本篇閱讀的代碼片段來自於30-seconds-of-python

median

def median(list):
  list.sort()
  list_length = len(list)
  if list_length % 2 == 0:
    return (list[int(list_length / 2) - 1] + list[int(list_length / 2)]) / 2
  return list[int(list_length / 2)]

# EXAMPLES
median([1,2,3]) # 2
median([1,2,3,4]) # 2.5

median函數接收一個列表,然后計算其中位數並返回。

中位數可以將一個數集、一個列表分成數量相等的上下兩部分。對一組有限個數的數據來說,其中位數是這樣的一種數:這群數據的一半的數據比它大,而另外一半數據比它小。

計算有限列表的中位數首先需要講列表排序。如果數據的個數是奇數,則中間那個數據就是這群數據的中位數;如果數據的個數是偶數,則中間那2個數據的算術平均值就是這群數據的中位數。

函數median首先將列表排序,然后根據列表長度是否為偶數(list_length % 2 == 0),使用不同的方式計算中位數。%是取余的計算符。

列表長度是偶數的情況:

因為列表下標從0開始計算,所以list_length / 2(list_length / 2) - 1分別為列表中間的兩個數。這兩個數的算數平均數就是中位數。

當列表長度是奇數的情況:

列表長度無法被2整除,使用int()強制轉換,會向零舍入(如果是正數就向下取整,如果是負數就向上取整)。因此int(list_length / 2)就是列表中間的數,即中位數。

n為奇數的時候,int(n/2) = (n-1)/2為整數。列表開始下標為0,結尾下標是n-1,因為(n-1)/2 - 0 = (n-1) - (n-1)/2,所以(n-1)/2是中位數的下標。


免責聲明!

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



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