详解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搜索引擎实现原理和方法
Nov 27 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
详解Python发送email的三种方式
Oct 18 Python
Python中Proxypool库的安装与配置
Oct 19 Python
利用python实现对web服务器的目录探测的方法
Feb 26 Python
详解python中TCP协议中的粘包问题
Mar 22 Python
python日志logging模块使用方法分析
May 23 Python
python pandas时序处理相关功能详解
Jul 03 Python
python写一个随机点名软件的实例
Nov 28 Python
Pytorch .pth权重文件的使用解析
Feb 14 Python
基于Python绘制个人足迹地图
Jun 01 Python
Python Django获取URL中的数据详解
Nov 01 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
10条PHP高级技巧[修正版]
2011/08/02 PHP
php中__toString()方法用法示例
2016/12/07 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
基于vue.js组件实现分页效果
2018/12/29 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
python实现图片彩色转化为素描
2019/01/15 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
应届生新闻编辑求职信
2013/11/19 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
python如何正确使用yield
2021/05/21 Python