本文為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()函數會更快一些。