logo

Heap queue (o heapq) a Python

Python.

Creació d'un munt senzill

El heapify (iterable) :- Aquesta funció s'utilitza per convertir l'iterable en un munt estructura de dades. és a dir, en ordre de pila.



Python 3






# importing 'heapq' to implement heap queue> import> heapq> # initializing list> li>=> [>5>,>7>,>9>,>1>,>3>]> # using heapify to convert list into heap> heapq.heapify(li)> # printing created heap> print> (>'The created heap is : '>,(>list>(li)))>



>

>

matriu de retorn de java
Sortida

The created heap is : [1, 3, 9, 7, 5]>

Afegir i desplegar elements de manera eficient

    heappush(heap, ele): Aquesta funció s'utilitza per inserir l'element esmentat als seus arguments en un munt. El s'ajusta l'ordre, de manera que es mantingui l'estructura de la pila. heappop(heap): Aquesta funció s'utilitza per eliminar i retornar l'element més petit del munt. L'ordre s'ajusta, de manera que es manté l'estructura del munt.

Python 3




com crear una matriu en java
# importing 'heapq' to implement heap queue> import> heapq> # initializing list> li>=> [>5>,>7>,>9>,>1>,>3>]> # using heapify to convert list into heap> heapq.heapify(li)> # printing created heap> print>(>'The created heap is : '>, end>=>'')> print>(>list>(li))> # using heappush() to push elements into heap> # pushes 4> heapq.heappush(li,>4>)> # printing modified heap> print>(>'The modified heap after push is : '>, end>=>'')> print>(>list>(li))> # using heappop() to pop smallest element> print>(>'The popped and smallest element is : '>, end>=>'')> print>(heapq.heappop(li))>

>

>

Sortida

The created heap is : [1, 3, 9, 7, 5] The modified heap after push is : [1, 3, 4, 7, 5, 9] The popped and smallest element is : 1>

Afegeix i esclata simultàniament

    heappushpop(heap, ele):- Aquesta funció combina el funcionament de les operacions push i pop en una sola declaració, augmentant l'eficiència. L'ordre de pila es manté després d'aquesta operació. heapreplace(heap, ele):- Aquesta funció també insereix i mostra elements en una instrucció, però és diferent de la funció anterior. En això, primer apareix l'element i després s'empeny l'element. és a dir, es pot retornar el valor més gran que el valor empès. heapreplace() retorna el valor més petit originalment a l'emmagatzematge dinàmic independentment de l'element empès a diferència de heappushpop().

Python 3




nombre sencer doble java

# importing 'heapq' to implement heap queue> import> heapq> # initializing list 1> li1>=> [>5>,>1>,>9>,>4>,>3>]> # initializing list 2> li2>=> [>5>,>7>,>9>,>4>,>3>]> # using heapify() to convert list into heap> heapq.heapify(li1)> heapq.heapify(li2)> # using heappushpop() to push and pop items simultaneously> # pops 2> print>(>'The popped item using heappushpop() is : '>, end>=>'')> print>(heapq.heappushpop(li1,>2>))> # using heapreplace() to push and pop items simultaneously> # pops 3> print>(>'The popped item using heapreplace() is : '>, end>=>'')> print>(heapq.heapreplace(li2,>2>))>

>

>

Sortida

The popped item using heappushpop() is : 1 The popped item using heapreplace() is : 3>

Trobeu els elements més grans i més petits de Heap a Python

    nlargest(k, iterable, key = fun): Aquesta funció s'utilitza per retornar els k elements més grans de l'iterable especificat i satisfer la clau si s'esmenta. nsmallest(k, iterable, clau = divertit): aquesta funció s'utilitza per retornar els k elements més petits de l'iterable especificat i satisfer la clau si s'esmenta.

Python 3




data java actual

# Python code to demonstrate working of> # nlargest() and nsmallest()> # importing 'heapq' to implement heap queue> import> heapq> # initializing list> li1>=> [>6>,>7>,>9>,>4>,>3>,>5>,>8>,>10>,>1>]> # using heapify() to convert list into heap> heapq.heapify(li1)> # using nlargest to print 3 largest numbers> # prints 10, 9 and 8> print>(>'The 3 largest numbers in list are : '>, end>=>'')> print>(heapq.nlargest(>3>, li1))> # using nsmallest to print 3 smallest numbers> # prints 1, 3 and 4> print>(>'The 3 smallest numbers in list are : '>, end>=>'')> print>(heapq.nsmallest(>3>, li1))>

>

>

Sortida

The 3 largest numbers in list are : [10, 9, 8] The 3 smallest numbers in list are : [1, 3, 4]>

Exemple:

Python 3




import> heapq> # Initialize a list with some values> values>=> [>5>,>1>,>3>,>7>,>4>,>2>]> # Convert the list into a heap> heapq.heapify(values)> # Print the heap> print>(>'Heap:'>, values)> # Add a new value to the heap> heapq.heappush(values,>6>)> # Print the updated heap> print>(>'Heap after push:'>, values)> # Remove and return the smallest element from the heap> smallest>=> heapq.heappop(values)> # Print the smallest element and the updated heap> print>(>'Smallest element:'>, smallest)> print>(>'Heap after pop:'>, values)> # Get the n smallest elements from the heap> n_smallest>=> heapq.nsmallest(>3>, values)> # Print the n smallest elements> print>(>'Smallest 3 elements:'>, n_smallest)> # Get the n largest elements from the heap> n_largest>=> heapq.nlargest(>2>, values)> # Print the n largest elements> print>(>'Largest 2 elements:'>, n_largest)>

>

>

Sortida

Heap: [1, 4, 2, 7, 5, 3] Heap after push: [1, 4, 2, 7, 5, 3, 6] Smallest element: 1 Heap after pop: [2, 4, 3, 7, 5, 6] Smallest 3 elements: [2, 3, 4] Largest 2 elements: [7, 6]>

Aquest programa crea una cua de pila utilitzant el mòdul heapq a Python i realitza diverses operacions com ara convertir una llista en una pila, afegir un nou valor a la pila, eliminar l'element més petit de la pila, obtenir els n elements més petits i n més grans de el munt.

convertir int en java doble

Nota que el mòdul heapq a Python proporciona funcions per realitzar operacions d'emmagatzematge dinàmic en llistes al seu lloc, sense crear una estructura de dades separada per a l'heap. El mòdul heapq és eficient i fàcil d'utilitzar, per la qual cosa és una opció popular per implementar cues de prioritat i altres estructures de dades a Python.

Avantatges d'utilitzar una cua heap (o heapq) a Python:

    Eficient: una cua de pila és una estructura de dades altament eficient per gestionar les cues i els munts de prioritat a Python. Proporciona complexitat de temps logarítmica per a moltes operacions, cosa que la converteix en una opció popular per a moltes aplicacions. Eficient d'espai: les cues d'heap són eficients en l'espai, ja que emmagatzemen elements en una representació basada en matrius, minimitzant la sobrecàrrega associada a estructures de dades basades en nodes, com ara llistes enllaçades. Fàcil d'utilitzar: les cues de pila a Python són fàcils d'utilitzar, amb una API senzilla i intuïtiva que facilita la realització d'operacions bàsiques com la inserció, la supressió i la recuperació d'elements de la pila. Flexible: les cues de pila a Python es poden utilitzar per implementar diverses estructures de dades, com ara cues de prioritat, munts i arbres binaris, fent-les una eina versàtil per a moltes aplicacions.

Desavantatges d'utilitzar una cua heap (o heapq) a Python:

    Funcionalitat limitada: les cues d'emmagatzematge munt estan dissenyades principalment per gestionar cues i munts de prioritat, i poden no ser adequades per a estructures i algorismes de dades més complexos. Sense accés aleatori: les cues d'emmagatzematge dinàmic no admeten l'accés aleatori als elements, cosa que dificulta l'accés als elements del mig del munt o modificar els elements que no es troben a la part superior del munt. Sense classificació: les cues de pila no admeten l'ordenació, de manera que si necessiteu ordenar els elements en un ordre específic, haureu d'utilitzar una estructura de dades o un algorisme diferent. No són segures per a fils: les cues d'heap no són segures per a fils, el que significa que poden no ser adequades per utilitzar-les en aplicacions multifils on la sincronització de dades és crítica.

En general, les cues de pila són una estructura de dades molt eficient i flexible per gestionar les cues i els munts de prioritat a Python, però poden tenir una funcionalitat limitada i pot ser que no siguin adequades per a totes les aplicacions.