2018-07-16 14:54:56 324浏览
关于Python查找两个有序列表中位数的方法有多少的小伙伴们了解呢?不论是正在参加Python培训学习Python开发技术的小伙伴或者是已经走入工作岗位的Python开发工程师们,相信都有一部分人是不了解的。本篇文章扣丁学堂Python培训小编就给大家分享一下Python查找两个有序列表中位数的方法,想要学习或了解的小伙伴就随小编一起来看一下吧。
今天做到的一个机试题目,很简单,这里简单记录一下:
我们用的是归并的思想,当然还可以用递归的方法,下面是具体实现:
#!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:找到两个有序列表的中位数 若列表总长度为奇数则直接返回中间下标的值 否则返回前一个值,如长度为6则返回下标为2处的值 ''' import random def random_nums_genetor(max_value=1000, total=100): ''''' 生成随机数 ''' num_list=[] for i in range(total): num_list.append(random.randint(1,max_value)) return num_list def find_two_list_mid_num(num_list1,num_list2): ''''' 找到两个有序列表的中位数 ''' length1=len(num_list1) length2=len(num_list2) total=length1+length2 if total%2==0: half=total/2-1 else: half=total/2 res_list=[] while len(num_list1) and len(num_list2): if num_list1[0]<num_list2[0]: res_list.append(num_list1.pop(0)) else: res_list.append(num_list2.pop(0)) if len(num_list1): res_list+=num_list1 elif len(num_list2): res_list+=num_list2 #print res_list print res_list[half] return res_list if __name__ == '__main__': print "扣丁学堂测试结果:" num_list1=[1,2,5,7,12,45,67,100] num_list2=[11,34,77,90] res_list=find_two_list_mid_num(num_list1,num_list2) print res_list[5] print '--------------------------------------------------------' num_list1=random_nums_genetor(max_value=1000, total=10) num_list2=random_nums_genetor(max_value=100, total=7) res_list=find_two_list_mid_num(num_list1, num_list2) print res_list[8]
以上就是扣丁学堂Python培训小编给大家分享的Python查找两个有序列表中位数的方法,希望对小伙伴们有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。扣丁学堂不仅有专业的Python培训班供大家报名学习,还有大量的Python视频教程供学员观看学习,想要学好Python开发技术的小伙伴快到扣丁学堂报名学习吧。扣丁学堂Python技术交流群:279521237。
【关注微信公众号获取更多学习资料】