Kaudzes rinda (vai hepq) Python
Python .
Vienkāršas kaudzes izveide
The kaudzēs (atkārtojams) :- Šī funkcija tiek izmantota pārvērst atkārtojamo par kaudzi datu struktūra. i., kaudzes kārtībā.
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)))> |
Izvade
The created heap is : [1, 3, 9, 7, 5]
Efektīva vienumu pievienošana un uzspiešana
- heappush(heap, ele) : šo funkciju izmanto, lai kaudzē ievietotu tās argumentos minēto elementu. The secība tiek koriģēta, lai saglabātu kaudzes struktūru. heappop(heap) : šo funkciju izmanto, lai noņemtu un atgrieztu mazāko elementu no kaudzes. Kārtība tiek koriģēta, lai saglabātu kaudzes struktūru.
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))> |
Izvade
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
Papildināšana un popping vienlaikus
- heappushpop(heap, ele) :- šī funkcija apvieno gan push, gan pop darbību darbību vienā paziņojumā, palielinot efektivitāti. Pēc šīs operācijas tiek uzturēta kaudzes kārtība. heapreplace(heap, ele) :- Šī funkcija arī ievieto un uznirst elementus vienā priekšrakstā, taču tā atšķiras no iepriekš minētās funkcijas. Šajā gadījumā elements vispirms tiek izspiests, pēc tam elements tiek stumts. i., var atgriezt vērtību, kas ir lielāka par nobīdīto vērtību. heapreplace() atgriež mazāko vērtību sākotnēji kaudzē neatkarīgi no nobīdītā elementa pretstatā 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> ))> |
Izvade
The popped item using heappushpop() is : 1 The popped item using heapreplace() is : 3
Atrodiet lielākos un mazākos elementus no Heap programmā Python
- nlargest(k, iterable, key = fun) : šī funkcija tiek izmantota, lai atgrieztu k lielākos elementus no norādītā iterējamā un atbilstu atslēgai, ja minēts. nsmallest(k, iterable, key = fun) : šī funkcija tiek izmantota, lai atgrieztu k mazākos elementus no norādītā iterējamā un atbilstu atslēgai, ja tas ir minēts.
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))> |
Izvade
The 3 largest numbers in list are : [10, 9, 8] The 3 smallest numbers in list are : [1, 3, 4]
Piemērs:
Python3
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)> |
Izvade
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]
Šī programma izveido kaudzes rindu, izmantojot Python moduli heapq un veic dažādas darbības, piemēram, saraksta pārveidošanu par kaudzi, jaunas vērtības pievienošanu kaudzītei, mazākā elementa noņemšanu no kaudzes, n mazāko un n lielāko elementu iegūšana no kaudzes. kaudze.
Piezīme ka Python modulis heapq nodrošina funkcijas kaudzes operāciju veikšanai sarakstos uz vietas, neveidojot kaudzes atsevišķu datu struktūru. Heapq modulis ir efektīvs un viegli lietojams, padarot to par populāru izvēli prioritāro rindu un citu datu struktūru ieviešanai Python.
Kaudzes rindas (vai hepq) izmantošanas priekšrocības Python:
- Efektīva: kaudzes rinda ir ļoti efektīva datu struktūra prioritāro rindu un kaudžu pārvaldībai Python. Tas nodrošina logaritmisko laika sarežģītību daudzām operācijām, padarot to par populāru izvēli daudzām lietojumprogrammām. Vietu taupošas : kaudzes rindas ir vietas ziņā efektīvas, jo tajās elementi tiek glabāti uz masīvu balstītā attēlojumā, līdz minimumam samazinot pieskaitāmās izmaksas, kas saistītas ar mezglu datu struktūrām, piemēram, saistītiem sarakstiem. Viegli lietojams: Python kaudzes rindas ir viegli lietojamas, izmantojot vienkāršu un intuitīvu API, kas ļauj viegli veikt tādas pamatdarbības kā elementu ievietošana, dzēšana un izgūšana no kaudzes. Elastīgs: kaudzes rindas programmā Python var izmantot, lai ieviestu dažādas datu struktūras, piemēram, prioritārās rindas, kaudzes un bināros kokus, padarot tos par daudzpusīgu rīku daudzām lietojumprogrammām.
Kaudzes rindas (vai hepq) izmantošanas trūkumi Python:
- Ierobežota funkcionalitāte : kaudzes rindas galvenokārt ir paredzētas prioritāro rindu un kaudžu pārvaldībai, un tās var nebūt piemērotas sarežģītākām datu struktūrām un algoritmiem. Bez nejaušas piekļuves : kaudzes rindas neatbalsta nejaušu piekļuvi elementiem, apgrūtinot piekļuvi elementiem kaudzes vidū vai elementu modificēšanu, kas neatrodas kaudzes augšdaļā. Bez šķirošanas: kaudzes rindas neatbalsta kārtošanu, tādēļ, ja elementi ir jākārto noteiktā secībā, jums būs jāizmanto cita datu struktūra vai algoritms. Nav drošas pavedieniem: kaudzes rindas nav drošas pret pavedieniem, kas nozīmē, ka tās var nebūt piemērotas izmantošanai vairāku pavedienu lietojumprogrammās, kurās datu sinhronizācija ir ļoti svarīga.
Kopumā kaudzes rindas ir ļoti efektīva un elastīga datu struktūra prioritāro rindu un kaudžu pārvaldībai programmā Python, taču tām var būt ierobežota funkcionalitāte un tās var nebūt piemērotas visām lietojumprogrammām.