python取列表中位数_详解Python如何获取列表(List)的中位
前⾔
中位数是⼀个可将数值集合划分为相等的上下两部分的⼀个数值。如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那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)
普通⽅法:
对列表进⾏排序,针对列表长度是奇数还是偶数的不同情况,计算中位数。
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的取反数。python获取数组长度
排序后得到序列[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能有所帮助。
如您对本⽂有疑问或者有任何想说的,请点击进⾏留⾔回复,万千⽹友为您解惑!