我覺得我一定是誤解了 heappushpop 因為我無法弄清楚為什么會發生這種情況。
sequence = [2, 6, 4, 5, 8]
result = []
x = [3, -1]
result.append(heapq.heappushpop(x, sequence[0]))
這不應該將 2 推入堆 x 并彈出 -1 嗎?我正在推動和彈出 2。
uj5u.com熱心網友回復:
發生這種情況是因為您開始時沒有使用最小堆。
x是不最小堆。heapq當您傳遞給它的串列不是堆時,您不能期望在堆上作業的函式給出合理的結果。
所以首先做:
heapq.heapify(x)
測驗:
import heapq
x = [3, -1]
heapq.heapify(x)
print(heapq.heappushpop(x, 2)) # outputs -1
print(x) # outputs [2, 3]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/397535.html
