擅长:python、mysql、java
<p><code>heappop</code>正在使用最后一个元素。它调用<code>_siftup</code>,并在位置-1处弹出元素(请参见:<code>heap.pop()</code>)。如果仔细观察,它将返回<code>returnitem</code>中所述的第一个元素作为返回值,但它不会弹出此项或在算法中使用此值</p>
<p>heapq.py:</p>
<pre><code>def heappop(heap):
"""Pop the smallest item off the heap, maintaining the heap invariant."""
lastelt = heap.pop() # raises appropriate IndexError if heap is empty
if heap:
returnitem = heap[0]
heap[0] = lastelt
_siftup(heap, 0)
return returnitem
return lastelt
</code></pre>
<h2>参考资料</h2>
<p>CPython heapq:<a href="https://github.com/python/cpython/blob/v3.8.5/Lib/heapq.py#L135-L143" rel="nofollow noreferrer">https://github.com/python/cpython/blob/v3.8.5/Lib/heapq.py#L135-L143</a></p>