溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python中有沒(méi)有堆

發(fā)布時(shí)間:2020-11-11 14:13:08 來(lái)源:億速云 閱讀:107 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下python中有沒(méi)有堆,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

堆(英語(yǔ):heap)是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱;

堆的定義:n個(gè)元素的序列{k1,k2,ki,…,kn}當(dāng)且僅當(dāng)滿足下關(guān)系時(shí),稱之為堆。

"ki<=k2i,ki<=k2i+1;或ki>=k2i,ki>=k2i+1.(i=1,2,…,[n/2])"

這是標(biāo)準(zhǔn)的堆的定義,但是python 中并沒(méi)有獨(dú)立的堆類型,只是包含一些堆操作函數(shù)的模塊(heapq =heap+queue首字母),其實(shí)堆在python中屬于一種特殊的列表;

簡(jiǎn)單的介紹一下heapq中的方法

import heapq
1.heapq.heappush(heap,item)  #heap為定義堆,item 增加的元素;
eg.
  heap=[]
  heapq.heappush(heap, 2)
2.heapq.heapify(list)        #將列表轉(zhuǎn)換為堆
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)     #首判斷添加元素值與堆的第一個(gè)元素值對(duì)比,如果大于則刪除最小元素,然后添加新的元素值,否則不更改堆
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(...)             #將多個(gè)堆合并
7.heapq.nlargest (n, heap)     #查詢堆中的最大元素,n表示查詢?cè)貍€(gè)數(shù)
eg.
  heap=[2, 3, 5, 6, 4, 8, 7, 9]
  heapq.nlargest (1, heap)--->[9]
8.heapq.nsmallest(n, heap)     #查詢堆中的最小元素,n表示查詢?cè)貍€(gè)數(shù)
eg.
 heap=[2, 3, 5, 6, 4, 8, 7, 9]
 heapq.nlargest (1, heap)--->[2]

以上是python中有沒(méi)有堆的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI