Sbirciare in un mucchio in pitone
Domanda
Qual è il modo ufficiale di sbirciare in un mucchio di pitone come creato dalle librerie heapq? In questo momento ho
def heappeak(heap):
smallest = heappop(heap)
heappush(heap, smallest)
return smallest
che è probabilmente, non molto bello. Posso sempre dal presupposto che heap[0]
è la parte superiore del mucchio e uso questo? O sarebbe che assumere troppo della implementazione sottostante?
Soluzione
Sì, è possibile fare questa ipotesi, in quanto si afferma nella documentazione rel="noreferrer"> :
Cumuli sono array che
heap[k] <= heap[2*k+1]
eheap[k] <= heap[2*k+2]
per tutti k , contando Elementi dallo zero. Per motivi di confronto, gli elementi non presenti sono considerato infinito. Il interessante proprietà di un heap è cheheap[0]
è sempre suo più piccolo elemento.
(E questo è probabilmente la ragione non esiste una funzione peek
:. Non v'è alcun bisogno di esso)
Altri suggerimenti
Se stai usando Python 2.4 o più recente, è possibile utilizzare anche heapq.nsmallest ().