详解Python如何获取列表(List)的中位数


Posted in Python onAugust 12, 2016

前言

中位数是一个可将数值集合划分为相等的上下两部分的一个数值。如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那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 的解释:

详解Python如何获取列表(List)的中位数

排序后得到序列[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能有所帮助。

Python 相关文章推荐
python 切片和range()用法说明
Mar 24 Python
python模拟登陆Tom邮箱示例分享
Jan 13 Python
python中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
python实现爬取千万淘宝商品的方法
Jun 30 Python
python迭代器与生成器详解
Mar 10 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 Python
Python抓取框架 Scrapy的架构
Aug 12 #Python
判断网页编码的方法python版
Aug 12 #Python
Python利用IPython提高开发效率
Aug 10 #Python
详解python如何调用C/C++底层库与互相传值
Aug 10 #Python
浅析python中的分片与截断序列
Aug 09 #Python
总结python爬虫抓站的实用技巧
Aug 09 #Python
教你用Type Hint提高Python程序开发效率
Aug 08 #Python
You might like
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
python optparse模块使用实例
2015/04/09 Python
分享Python文本生成二维码实例
2016/01/06 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
python二进制文件的转译详解
2019/07/03 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
助人为乐表扬信范文
2014/01/14 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
安全教育片观后感
2015/06/17 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers