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.后记

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

你可能感兴趣的:(python3,python基础题详解)