資料結構相關模組(堆)

來源:互聯網
上載者:User

標籤:python   堆   

如果學過資料結構就知道 堆排序,python提供了一個堆隊列的模組heapq能很容易實現堆排序

heapd

如果要擷取一個列表中N個最大最小的元素,heapd提供了兩個函數:nlargest()和nsmallest

import heapqnums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]print(heapq.nlargest(3, nums)) # Prints [42, 37, 23]print(heapq.nsmallest(3, nums)) # Prints [-4, 1, 2]

兩個函數都能接受一個關鍵字參數,用於更複雜的資料結構中:

portfolio = [{‘name‘: ‘IBM‘, ‘shares‘: 100, ‘price‘: 91.1},             {‘name‘: ‘AAPL‘, ‘shares‘: 50, ‘price‘: 543.22},             {‘name‘: ‘FB‘, ‘shares‘: 200, ‘price‘: 21.09},             {‘name‘: ‘HPQ‘, ‘shares‘: 35, ‘price‘: 31.75},             {‘name‘: ‘YHOO‘, ‘shares‘: 45, ‘price‘: 16.35},             {‘name‘: ‘ACME‘, ‘shares‘: 75, ‘price‘: 115.65}]cheap = heapq.nsmallest(3, portfolio, key=s[‘price‘])expensive = heapq.nlargest(3, portfolio, key=s[‘price‘])


本文出自 “機制小風風” 部落格,請務必保留此出處http://xiaofengfeng.blog.51cto.com/8193303/1885780

資料結構相關模組(堆)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.