您好,登錄后才能下訂單哦!
小編給大家分享一下python中有沒有堆,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
堆(英語:heap)是計算機科學中一類特殊的數據結構的統稱;
堆的定義:n個元素的序列{k1,k2,ki,…,kn}當且僅當滿足下關系時,稱之為堆。
"ki<=k2i,ki<=k2i+1;或ki>=k2i,ki>=k2i+1.(i=1,2,…,[n/2])"
這是標準的堆的定義,但是python 中并沒有獨立的堆類型,只是包含一些堆操作函數的模塊(heapq =heap+queue首字母),其實堆在python中屬于一種特殊的列表;
簡單的介紹一下heapq中的方法
import heapq 1.heapq.heappush(heap,item) #heap為定義堆,item 增加的元素; eg. heap=[] heapq.heappush(heap, 2) 2.heapq.heapify(list) #將列表轉換為堆 eg. list=[5,8,0,3,6,7,9,1,4,2] heapq.heapify(list) 3.heapq.heappop(heap) #刪除最小的值 eg. heap=[2, 4, 3, 5, 7, 8, 9, 6] heapq.heappop(heap) ---->heap=[3, 4, 5, 7, 9, 6, 8] 4.heapq.heapreplace(heap, item) #刪除最小元素值,添加新的元素值 eg. heap=[2, 4, 3, 5, 7, 8, 9, 6] heapq.heapreplace(heap, 11) ------>heap=[2, 3, 4, 6, 8, 5, 7, 9, 11] 5.heapq.heappushpop(heap, item) #首判斷添加元素值與堆的第一個元素值對比,如果大于則刪除最小元素,然后添加新的元素值,否則不更改堆 eg. 條件:item >heap[0] heap=[2, 4, 3, 5, 7, 8, 9, 6] heapq.heappushpop(heap, 9)---->heap=[3, 4, 5, 6, 8, 9, 9, 7] 條件:item heap=[2, 4, 3, 5, 7, 8, 9, 6] heapq.heappushpop(heap, 9)---->heap=[2, 4, 3, 5, 7, 8, 9, 6] 6.heapq.merge(...) #將多個堆合并 7.heapq.nlargest (n, heap) #查詢堆中的最大元素,n表示查詢元素個數 eg. heap=[2, 3, 5, 6, 4, 8, 7, 9] heapq.nlargest (1, heap)--->[9] 8.heapq.nsmallest(n, heap) #查詢堆中的最小元素,n表示查詢元素個數 eg. heap=[2, 3, 5, 6, 4, 8, 7, 9] heapq.nlargest (1, heap)--->[2]
以上是python中有沒有堆的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。