python列表中位數的獲取

2021-08-21 14:56:10 字數 1673 閱讀 8025

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

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

輸出: 陣列的中位數(int, float).

範例:

get_median([1, 2, 3, 4, 5]) == 3

get_median([3, 1, 2, 5, 3]) == 3

get_median([1, 300, 2, 200, 1]) == 2

get_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)

普通方法:

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

1 def get_median(data):

2 data = sorted(data)

3 size = len(data)

4 if size % 2 == 0: # 判斷列表長度為偶數

5 median = (data[size//2]+data[size//2-1])/2

6 data[0] = median

7 if size % 2 == 1: # 判斷列表長度為奇數

8 median = data[(size-1)//2]

9 data[0] = median

10 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)決定。仍然符合**。

1 def get_median(data):

2 data.sort()

3 half = len(data) // 2

4 return (data[half] + data[~half]) / 2

求列表中位數Python

給你乙個整數列表l,輸出l的中位數 若結果為小數,則保留一位小數 例如 l 0,1,2,3,4 則輸出 2 題目 於pythontip,中位數的計算取決於元素的個數,如果元素個數為奇數個,直接取中間的下標即可,如果為偶數,需要計算中間兩個的和,再取平均值。但是python需要注意整除和除法與其他語言...

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...

中位數的中位數

參照王曉東的演算法設計 中位數的中位數,即將一串數分成n段,求其排好序了的中間那個數,再把這些所有中位數再求一次中位數。for int i 0 i r p 4 5 i 找中位數的中位數,r p 4即上面所說的n 5 int x lineselect a,p,p r p 4 5,r p 4 10 線性...