普通方法:
對列表進行排序,然後根據長度為奇數或者偶數的不同情況計算中位數
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需要注意整除和除法與其他語言...