1. 程式人生 > >Python輕鬆入門-34 列表查詢最大和最小值

Python輕鬆入門-34 列表查詢最大和最小值

視訊教程下載連結:http://pan.baidu.com/s/1kVuNFx1

配套教程下載:http://pan.baidu.com/s/1qYdI6q4

這節課,我們來教大家如何獲得列表的最大最小值,你可能會說,我直接用sorted排序函式不就可以了,排序之後去除掉首尾的元素不就可以獲得最大值了嗎?但是這種情況僅適用於純數字或者純字串,那麼假如有一個員工的物件,它有工作id,姓名,工資等屬性,那麼該如何排序呢?這裡就需要引入heapq模組,Python中的heapq模組提供了一種堆佇列heapq型別,這樣實現堆排序等演算法就相當方便,這裡我們就來詳解Python中heapq模組的用法,假如現在有一個列表:
import heapq grades = [32, 43, 654, 34, 666]
這時候,我想獲得列表中最大的3個數字,這裡我們可以用heapq,然後呼叫nlargest,第一個引數是最大元素的個數,這裡我們希望獲得最大的3個數字,第二個引數是你要查詢的資料集,所以這裡是grades,執行:
print(heapq.nlargest(3, grades))
你看,打印出了最大的3個數字: 這只是對數字的簡單排序,如果現在我們有一個這樣的複雜的列表:
stocks = [ {'ticker':'AAPL', 'price':201}, {'ticker':'GOOG', 'price':800}, {'ticker':'FB', 'price':54}, {'ticker':'MSFT', 'price':68} ]
它是一個字典的列表,假如現在我想買股票,我想找到其中最便宜的2個股票,當然這裡你一眼就可以看出來,但是假如我們有成千上萬條資料呢?這裡就是heapq的用武之地了,和之前一樣,前2個引數分別是個數和列表,現在,我們想按照字典中的price這個key值排序,這裡就需要第三個引數了,它是一個Lambda函式,對於每一個stock,我們取price這個key值:
print(heapq.nsmallest(2, stocks, key=lambda stock: stock['price']))
執行,你看: 成功的輸出了最便宜的2個股票。 所以,當面對一個簡單的列表,這裡只需要2個引數,但是當遇到一個自定義的物件或者複雜的資料集,就需要根據需要,定製第三個引數了。 更多精彩內容盡在視訊中! 本文固定連結:
http://www.oxox.work/web/python/max-min/ | 虛幻大學


檢視原文:http://www.oxox.work/web/python/max-min/