New submission from Scott Queen <scoote...@gmail.com>:

The documentation for heapq.heappop(heap) says:
"Pop and return the smallest item from the heap, maintaining the heap 
invariant. If the heap is empty, IndexError is raised. To access the smallest 
item without popping it, use heap[0]."

yet, in the following code, the resultant heap doesn't reflect the heap 
invariant:

import heapq
li = [5, 7, 9, 1, 4, 3]
heapq.heapify(li)
#change a couple values in the heap
li[3] = 16
li[4] = 2
print (heapq.heappop(li))
print ("The heap after pop is : ",end="")
print (list(li))

This prints: The heap after pop is : [3, 4, 9, 16, 2]

The documentation implies to me that heapify would be called internally after 
heappop, but I may be misreading. Perhaps heappop could say that the heap 
invariant is maintained if the heap is properly sorted before the heappop 
invocation.

----------
assignee: docs@python
components: Documentation
messages: 307006
nosy: docs@python, scooter4j
priority: normal
severity: normal
status: open
title: heapq.heappop - documentation misleading or doesn't work
type: behavior
versions: Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32142>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to