<>强提出问题:强>
如何在某集合里面找出最大或最小的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()函数,这个函数首先会在底层将数据转换成列的表,并且元素会以堆的顺序排列。举例:
从上面的代码中,我们看出元素确实是以堆的顺序排列的,同时堆hea_num[0]对应的元素9总是最小的。在heapq()模块中还提供heappop()函数,该方法会把第一个元素(最小的)给弹出来,然后第二小的元素会自动补位,它的操作时间复杂度是O (log N),其中N代表的是堆的大小。
具体的操作看下面的代码:
当要查找的元素数量比较少的时,适合使用nlargest()和nsmallest ()
当只查找集合中最大或最小的1个元素时,推荐使用min()和max ()
当N和集合本身大小差不多时,应该是先对集合排序,然后做切片操作(比如:排序(物品)[:N]或排序(物品)[N:])
<强> python三个数从小到大排序强>
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个数