普通方法:对列表进行排序,然后根据长度是奇数还是偶数来计算中位数。defhuahua(x):length=len(x)print(length)x.sort()print(x)if(length%2)==1:z=length//2y=x[z]else:y=(x[length//2]+x[length//2-1])/2returnyl=[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]是链表的第6位,5的倒数是-6,x[-6]其实是链表的逆向查找,也就是链表的第5位,中值是5+6/2=5.5当长度为10的偶数时。当结果为l=[1,2,3,4,5,6,7,8,9]时,长度为9,half=9//2=4,x[4]是list的第5位,4倒过来是-5,x[-5]是list中正反查的第5位,所以x[4]==x[-5],中位数为x[4]或x[-5]。'''学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006,寻找志同道合的小伙伴互相帮助。群里还有不错的视频学习教程和PDF电子书!'''defmedian(data):data.sort()half=len(data)//2return(data[half]+data[~half])/2l=[1,2,3,7,5,6,4,9,8,10]if__name__=='__main__':print(median(l))以上就是本次分享的全部内容,现在想学习编程的朋友欢迎关注Python技术BaseCamp,获取更多Multiple技能和教程。
