python之求中位数

1.贴题

题目来自PythonTip
求中位数


给你一个整数列表L, 输出L的中位数(若结果为小数,则保留一位小数)。

例如: L=[0,1,2,3,4]

则输出:2


2.说明

  1. 如果列表有奇数个整数,则输出中间那个
  2. 如果列表有偶数个整数,则输出中间两个的平均值

3.参考代码

l = len(L) #数出列表中有几个元素,将个数放到l里
L.sort() #将列表按升序排列
if l%2 == 0: #如果有偶数个整数
    m = (L[int(l/2) - 1] + L[int(l/2)]) / 2 #计算中间两个的平均值,存到m里
    print("%.1f" % m) #按一位小数打印m
else: #如果有奇数个整数
    m = L[int((l-1)/2)] #将中间那个整数的值存到m里
    print(m) #直接打印m

4.改进

  • 因为python进行除法后会转换成float类型,所以即使能够整除也要转换一下类型。更简洁的写法是使用整除//
  • 备注一下,如果是python2版本直接进行除法会保留整数跟c语言一样

5.其他写法

L = sorted(L)
print(L[len(L)//2] if len(L)%2==1 else "%.1f"%(0.5*(L[len(L)//2-1]+L[len(L)//2])))

6.后记

这道题没有什么特殊的地方,踏踏实实把每一个要求做到就好了。刚开始可以怎么想的就怎么写代码,然后再提炼看有没有可以简化的地方,如果有余力还可以挑战一下写成列表推导式。理论上能应该都可以写成列表推导式的。

  • 10
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值