詳解Python如何擷取列表(List)的中位元,python中位元

來源:互聯網
上載者:User

詳解Python如何擷取列表(List)的中位元,python中位元

前言

中位元是一個可將數值集合劃分為相等的上下兩部分的一個數值。如果列表資料的個數是奇數,則列表中間那個資料就是列表資料的中位元;如果列表資料的個數是偶數,則列表中間那2個資料的算術平均值就是列表資料的中位元。在這個任務裡,你將得到一個含有自然數的非空數組(X)。你必須把它分成上下兩部分,找到中位元。

輸入: 一個作為數組的整數(int)列表(list)的。

輸出: 數組的中位元(int, float). 

樣本

get_median([1, 2, 3, 4, 5]) == 3get_median([3, 1, 2, 5, 3]) == 3get_median([1, 300, 2, 200, 1]) == 2get_median([3, 6, 20, 99, 10, 15]) == 12.5
 

如何使用: 中位元在機率論和統計學中得到應用,它偏態分布中有顯著的價值。例如:我們想從一組資料中知道人們的平均財富 -- 100人一個月收入100美元,10人一個月收入1,000,000美元。如果我們算平均值,得到的是91000美元。這是一個完全沒有向我們展示真實情況的奇怪的值。所以在這種情況下,中位元會給我們更有用的值和較好的描述。

前提: 1 < len(data) ≤ 1000 all(0 ≤ x < 10 ** 6 for x in data)

普通方法:

對列表進行排序,針對列表長度是奇數還是偶數的不同情況,計算中位元。

def get_median(data):   data = sorted(data)   size = len(data)   if size % 2 == 0: # 判斷列表長度為偶數    median = (data[size//2]+data[size//2-1])/2    data[0] = median   if size % 2 == 1: # 判斷列表長度為奇數    median = data[(size-1)//2]    data[0] = median   return data[0]

最佳方法:

這個解決方案非常巧妙,它利用了取反數和為1的特性,通過列表負索引來獲得列表中位元。

return (data[half] + data[~half]) / 2 的解釋:

排序後得到序列[1,2,3,4,5,6],其列表長度為偶數,中位元由列表中間兩位元素3(索引為2),4(索引為3)決定。而元素4的負索引為-3,正好是索引2的取反數。

排序後得到序列[1,2,3,4,5],其列表長度為奇數,中位元由列表中間元素3(索引為2,負索引為-3)決定。仍然符合代碼。 

   def get_median(data):   data.sort()   half = len(data) // 2   return (data[half] + data[~half]) / 2

總結

以上就是Python實現擷取列表的中位元的全部內容,希望本文的內容對大家學習python能有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.