美文网首页扣丁学堂Python培训
扣丁学堂简述Python查找两个有序列表中位数的方法

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

作者: 994d14631d16 | 来源:发表于2018-08-02 11:04 被阅读0次

关于Python查找两个有序列表中位数的方法有多少的小伙伴们了解呢?不论是正在参加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]

      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查找两个有序列表中位数的方法

    本文链接:https://www.haomeiwen.com/subject/mbsjvftx.html