Python .
Sukurti paprastą krūvą
The sukaupti (kartojantis) :- Ši funkcija naudojama konvertuoti iteruojamą į krūvą duomenų struktūra. y., krūvos tvarka.
Python3
# 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)))> |
>
>
nbspIšvestis
The created heap is : [1, 3, 9, 7, 5]>
Veiksmingas elementų pridėjimas ir iššokimas
- heappush(heap, ele) : Ši funkcija naudojama argumentuose minimam elementui įterpti į krūvą. The tvarka koreguojama taip, kad būtų išlaikyta krūvos struktūra. heappop(heap) : ši funkcija naudojama pašalinti ir grąžinti mažiausią elementą iš krūvos. Tvarka koreguojama taip, kad būtų išlaikyta krūvos struktūra.
Python3
# 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))> |
>
>Išvestis
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>
Pridėjimas ir iššokimas tuo pačiu metu
- heappushpop(heap, ele) : Ši funkcija sujungia tiek push, tiek pop operacijų veikimą viename sakinyje, padidindama efektyvumą. Po šios operacijos išlaikoma krūvos tvarka. heapreplace(heap, ele) :- Ši funkcija taip pat įterpia ir išskleidžia elementus viename sakinyje, tačiau ji skiriasi nuo anksčiau pateiktos funkcijos. Šiuo atveju elementas pirmiausia iššokamas, tada elementas stumiamas. y., galima grąžinti vertę, didesnę nei stumiama reikšmė. heapreplace() grąžina mažiausią reikšmę iš pradžių krūvoje, neatsižvelgiant į nustumtą elementą, o ne heappushpop().
Python3
# 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>))> |
>
>Išvestis
The popped item using heappushpop() is : 1 The popped item using heapreplace() is : 3>
Raskite didžiausius ir mažiausius „Heap“ elementus „Python“.
- nlargest(k, iterable, key = fun) : ši funkcija naudojama norint grąžinti k didžiausius elementus iš nurodytos kartojimo programos ir patenkinti raktą, jei minėta. nsmallest(k, iterable, key = fun) : ši funkcija naudojama norint grąžinti k mažiausius elementus iš nurodytos kartojimo programos ir patenkinti raktą, jei toks yra.
Python3
# 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))> |
>
>Išvestis
The 3 largest numbers in list are : [10, 9, 8] The 3 smallest numbers in list are : [1, 3, 4]>
Pavyzdys:
Python3
žodynas c#
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)> |
>
>Išvestis
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]>
Ši programa sukuria krūvos eilę naudodama Python modulį heapq ir atlieka įvairias operacijas, tokias kaip sąrašo konvertavimas į krūvą, naujos vertės įtraukimas į krūvą, mažiausio elemento pašalinimas iš krūvos, n mažiausių ir n didžiausių elementų gavimas iš krūva.
Pastaba kad Heapq modulis Python teikia funkcijas, skirtas atlikti krūvos operacijas su sąrašais vietoje, nesukuriant atskiros duomenų struktūros krūvai. Heapq modulis yra efektyvus ir paprastas naudoti, todėl jis yra populiarus pasirinkimas diegiant prioritetines eiles ir kitas duomenų struktūras Python.
Krūvos eilės (arba heapq) naudojimo Python pranašumai:
- Efektyvus : krūvos eilė yra labai efektyvi duomenų struktūra, skirta tvarkyti prioritetines eiles ir krūvas Python. Tai suteikia logaritminį laiko sudėtingumą daugeliui operacijų, todėl tai yra populiarus pasirinkimas daugeliui programų. Erdvės taupymas : krūvos eilės taupo erdvę, nes jose saugomi elementai masyvo atvaizdavime, sumažinant pridėtines išlaidas, susijusias su mazgais pagrįstomis duomenų struktūromis, pvz., susietais sąrašais. Paprasta naudoti: Python krūvos eiles lengva naudoti, naudojant paprastą ir intuityvią API, kuri leidžia lengvai atlikti pagrindines operacijas, pvz., įterpti, ištrinti ir gauti elementus iš krūvos. Lankstus: „Python“ krūvos eilės gali būti naudojamos įvairioms duomenų struktūroms, pvz., prioritetinėms eilėms, krūvoms ir dvejetainiams medžiams, įdiegti, todėl jos yra universalus įrankis daugeliui programų.
Krūvos eilės (arba heapq) naudojimo Python trūkumai:
- Ribotos funkcijos : krūvos eilės pirmiausia skirtos prioritetinėms eilėms ir krūvoms tvarkyti ir gali būti netinkamos sudėtingesnėms duomenų struktūroms ir algoritmams. Nėra atsitiktinės prieigos : krūvos eilės nepalaiko atsitiktinės prieigos prie elementų, todėl sunku pasiekti elementus krūvos viduryje arba keisti elementus, kurie nėra krūvos viršuje. Jokio rūšiavimo: krūvos eilės nepalaiko rūšiavimo, todėl jei reikia rūšiuoti elementus tam tikra tvarka, turėsite naudoti kitą duomenų struktūrą arba algoritmą. Neapsaugotas gijose : krūvos eilės nėra apsaugotos nuo gijų, o tai reiškia, kad jos gali būti netinkamos naudoti kelių gijų programose, kur duomenų sinchronizavimas yra labai svarbus.
Apskritai krūvos eilės yra labai efektyvi ir lanksti duomenų struktūra, skirta tvarkyti prioritetines eiles ir krūvas Python, tačiau jų funkcionalumas gali būti ribotas ir gali būti netinkamas visoms programoms.