python中獲取中位數

2021-10-14 04:43:10 字數 1218 閱讀 5828

普通方法:

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

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])/

2return 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])/

2l =[1

,2,3

,7,5

,6,4

,9,8

,10]if __name__ ==

'__main__'

:print

(median(l)

)

python列表中位數的獲取

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

中位數的中位數

參照王曉東的演算法設計 中位數的中位數,即將一串數分成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 線性...

求列表中位數Python

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