python中获取中位数的两种方法

普通方法:

对列表进行排序,然后根据长度为奇数或者偶数的不同情况计算中位数

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


l = [1,2,3,7,5,6,4,9,8,10]
if __name__ == '__main__':
    print(median(l))
posted @   python学习者0  阅读(8932)  评论(0编辑  收藏  举报
编辑推荐:
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
阅读排行:
· 想让你多爱自己一些的开源计时器
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 大模型 Token 究竟是啥:图解大模型Token
· 如何在 .NET 中 使用 ANTLR4
· 用99元买的服务器搭一套CI/CD系统
历史上的今天:
2019-09-27 Python规范:提高可读性
点击右上角即可分享
微信分享提示