查看: 63|回复: 0

扣丁学堂简述Python查找两个有序列表中位数的方法

发表于 2018-8-2 11:05:50

关于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。


文章转载自:扣丁学堂http://www.codingke.com/


回复

使用道具 举报