Skip to main content
 首页 » 程序教程

Python查找最大或最小的N个元素

2016年11月03日7260

本文为Python CookBook一书的阅读笔记。

怎么样从一个集合中获得最大或者最小的N元素列表呢?马上能够想到的方法是对集合进行排序操作,排序的算法则有冒泡、选择、插入等。有没有更简单的方法呢?Python标准模块heapq中提供了nlargest()和nsmallest()两个函数解决该问题。

nlargest()和nsmallest()用法

nlargest()和nsmallest()两个函数都接受一个关键字参数,用于更复杂的数据结构中。示例代码如下:

import heapq
from random import randint

nums = [randint(1, 100) for _ in range(5)]
# 随机数列表,结果为:[89, 94, 26, 48, 3]
print(nums)
# 结果为:[94, 89, 48]
print(heapq.nlargest(3, nums))
# 结果为:[3, 26, 48]
print(heapq.nsmallest(3, nums))

当要查找的元素个数相对比较小时,函数nlargest()和nsmallest()是比较合适的。如果仅仅是想查找唯一的最小值或者最大值,那么使用max()和min()函数会更快一些。


评论列表暂无评论
发表评论