Python实现从N个数中找到最大的K个数

  

<>强提出问题:

  

如何在某集合里面找出最大或最小的K个元素。

  

  

找出最大或最下的K个元素,可以使用Python库中的heapq模块,该模块提供两个函数nlargest()求最大K个和nsmallest()求最小K个。

  

<强>下面我们举例说明:

        进口heapq      num=[3 12日,9日,32岁,9日,56岁,23日0时,11日,34)   打印(heapq.nlargest (4, num)) #——在最大的4个   打印(heapq.nsmallest (4, num)) #——在最小的4个   之前      

运行结果:

  
  

[56, 34岁,32岁,23]
  (9、3、0、9)

     

分析下,nlargest()和nsmallest()函数有两个参数,第一个参数是求最大或最下的K个元素,第二个参数是待查询的集合。除此之外,他们也可以接受一个参数键,这使得他们处理更加复杂的数据结构,例如:

        进口heapq   投资组合=[   {“名称”:“IBM”、“股票”:100年,“价格”:91.1},   {“名称”:“apple”,“股票”:50岁的“价格”:543.22},   {“名称”:“facebook”,“股票”:200年,“价格”:21.09},   {“名称”:“hp”、“股票”:35岁的“价格”:31.75},   {“名称”:“yahoo”、“股票”:45岁的“价格”:16.35},   {“名称”:“极致”,“股票”:75年,“价格”:115.65}   ]      便宜=heapq。nsmallest(3组合键=λ:年代[价格])   打印(便宜)   贵=heapq。nlargest(3组合键=λ:年代[价格])   打印(昂贵的)   之前      

运行结果:

  
  

[{“名称”:“yahoo”、“股票”:45岁的“价格”:16.35},{“名称”:“facebook”,“股票”:200年,“价格”:21.09},{“名称”:“hp”、“股票”:35岁的“价格”:31.75}]
  [{“名称”:“apple”,“股票”:50岁的“价格”:543.22},{“名称”:“极致”,“股票”:75年,“价格”:115.65},{“名称”:“IBM”、“股票”:100年,“价格”:91.1}]

     

<强>深入讨论:

  

假如说,我们正在寻找某集合中最大或最下的K个元素,并且N的数值很小,如果再使用上面的方法,可能就不是最好的选择。那么,我们介绍heapify()函数,这个函数首先会在底层将数据转换成列的表,并且元素会以堆的顺序排列。举例:

  

 Python实现从N个数中找到最大的K个数

  

从上面的代码中,我们看出元素确实是以堆的顺序排列的,同时堆hea_num[0]对应的元素9总是最小的。在heapq()模块中还提供heappop()函数,该方法会把第一个元素(最小的)给弹出来,然后第二小的元素会自动补位,它的操作时间复杂度是O (log N),其中N代表的是堆的大小。

  

具体的操作看下面的代码:

  

 Python实现从N个数中找到最大的K个数

  

  

当要查找的元素数量比较少的时,适合使用nlargest()和nsmallest ()

  

当只查找集合中最大或最小的1个元素时,推荐使用min()和max ()

  

当N和集合本身大小差不多时,应该是先对集合排序,然后做切片操作(比如:排序(物品)[:N]或排序(物品)[N:])

  

<强> python三个数从小到大排序

  

 Python实现从N个数中找到最大的K个数

  

python三个数从小到大排序

  

1,首先定义一个函数paiLie(),然后在paiLie函数内使用的循环和输入获取三个数字并存入列表;最后调用列表的排序()方法进行排序即可。

        def paiLie ():   结果=[]   因为我在范围(3):   x=输入(“请输入数字:”)   result.append (x)   result.sort ()   打印结果      

2,调用

  
  

paiLie ()
  请输入数字:56
  请输入数字:5
  请输入数字:89

     

运行结果:

  
  56岁的

[5 89]
  

     

以上这篇Python实现从N个数中找到最大的K个数就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

Python实现从N个数中找到最大的K个数