欢迎访问Python每天3分钟系列。
每天花3分钟时间,学习或温习一个Python知识点。今天是第050篇:
获取列表中最大或最小的n个数字
给出一个列表,如何获取其中最大的3个数字,或者最小的三个数字?
scores = [51, 33, 64, 87, 91, 75, 15, 49, 33, 82]
远古青年可能会自己实现算法。
普通青年可以这么做:先排序,再切片。
scores = [51, 33, 64, 87, 91, 75, 15, 49, 33, 82]
# 最大的三个数字
scores.sort(reverse=True)
print(scores[0:3])
# 最小的三个数字
scores.sort()
print(scores[0:3])
打印结果:
[91, 87, 82]
[15, 33, 33]
但我今天重点要介绍的是heapq模块:
import heapq
scores = [51, 33, 64, 87, 91, 75, 15, 49, 33, 82]
print(heapq.nlargest(3, scores)) # [91, 87, 82]
print(heapq.nsmallest(5, scores)) # [15, 33, 33, 49, 51]
打印结果:
[91, 87, 82]
[15, 33, 33, 49, 51]
heapq
是Python自带的模块,它实现了优先队列(Priority Queue)算法,以及一些方便的方法,比如获取最大,最小的n个数字等。
在数据量不大的情况下,用哪种方法都问题不大。但在数据量比较大的情况下,用heapq
的效率可能要好很多。既然这样,不如就用heapq
吧
原文链接:https://www.afxvip.com/5644.html,转载请注明出处。
评论0