Python Jono: FIFO, LIFO Esimerkki
Mikä on Python Jonottaa?
Jono on säilö, joka sisältää tietoja. Ensin syötettävät tiedot poistetaan ensin, ja siksi jonoa kutsutaan myös nimellä "First in First Out" (FIFO). Jonolla on kaksi päätä edessä ja takana. Tavarat syötetään sisään takaa ja poistetaan etupuolelta.
Miten Python Jono työ?
Jonoa voidaan helposti verrata tosielämän esimerkkiin lipputiskillä jonossa odottavien ihmisten jonoon, ensimmäisenä seisova saa lipun ensin, sen jälkeen seuraava ja niin edelleen. Sama logiikka pätee myös jonotietorakenteeseen.
Tässä on kaaviomainen esitys jonosta:
Focus-patjan Takaosa edustaa kohtaa, jossa kohteet lisätään jonoon. Tässä esimerkissä 7 on arvo sille.
Focus-patjan Etusivu edustaa kohtaa, jossa kohteet jonosta poistetaan. Jos poistat kohteen jonosta, ensimmäinen elementti, jonka saat, on 1, kuten kuvassa näkyy.
Kohde 1 oli ensimmäinen, joka lisättiin jonoon, ja poistettaessa se tulee ensimmäisenä ulos. Tästä syystä jonoa kutsutaan FIFO (FIRST IN FIRST OUT)
Jonossa tuotteet poistetaan järjestyksessä, eikä niitä voi poistaa siltä väliltä. Kohdetta 5 ei vain voi poistaa satunnaisesti jonosta, vaan sinun on poistettava kaikki tuotteet ennen numeroa 5. Jonossa olevat kohteet poistetaan siinä järjestyksessä, jossa ne on lisätty.
Jonon tyypit sisään Python
Jonot ovat pääasiassa kahdenlaisia Python:
- First in First Out Queue: Tätä varten ensin lähtevä elementti tulee ulos ensimmäisenä. Jos haluat työskennellä FIFO:n kanssa, sinun on kutsuttava Jonottaa() luokka jonomoduulista.
- Last in First out Queue: Täällä viimeiseksi syötetty elementti tulee ulos ensimmäisenä. Jos haluat työskennellä LIFO:n kanssa, sinun on soitettava LifoQueue() luokkaa jonomoduulista.
Python jono Asennus
Pythonissa on erittäin helppoa työskennellä jonon kanssa. Tässä on ohjeita, joita sinun on noudatettava käyttääksesi jonoa koodissasi.
Vaihe 1) Sinun tarvitsee vain tuoda jonomoduuli alla olevan kuvan mukaisesti:
import queue
Moduuli on oletuksena saatavilla pythonin kanssa, etkä tarvitse lisäasennusta aloittaaksesi työskentelyn jonon kanssa. Jonoja on kahta tyyppiä FIFO (first in first out) ja LIFO (viimeinen sisään ensin ulos).
Vaihe 2) Jos haluat työskennellä FIFO-jonon kanssa, kutsu Queue-luokka käyttämällä jonomoduulia, joka on tuotu alla olevan kuvan mukaisesti:
import queue q1 = queue.Queue()
Vaihe 3) Työskentele LIFO-jonon kanssa kutsumalla LifoQueue()-luokkaa alla olevan kuvan mukaisesti:
import queue q1 = queue.LifoQueue()
Menetelmät ovat käytettävissä Queue- ja LifoQueue-luokissa
Seuraavat ovat tärkeät menetelmät, jotka ovat käytettävissä Queue- ja LifoQueue-luokissa:
- laittaa(tuote): Tämä asettaa kohteen jonoon.
- saada(): Tämä palauttaa sinulle tuotteen jonosta.
- tyhjä(): Se palauttaa arvon tosi, jos jono on tyhjä, ja epätosi, jos kohteita on.
- qsize(): palauttaa jonon koon.
- koko(): palauttaa arvon tosi, jos jono on täynnä, muuten false.
Esimerkki First In First Out -jonosta
Jos kyseessä on ensimmäinen sisään ensimmäinen ulos, ensimmäisenä lähtevä elementti tulee ulos ensimmäisenä.
Lisää ja tuote jonossa
Työstetään esimerkkiä kohteen lisäämiseksi jonoon. Aloita työskentely jonon kanssa tuomalla ensin moduulijono alla olevan esimerkin mukaisesti.
Voit lisätä kohteen käyttämällä put()-menetelmää esimerkin mukaisesti:
import queue q1 = queue.Queue() q1.put(10) #this will additem 10 to the queue.
Oletusarvoisesti jonon koko on ääretön ja voit lisätä siihen minkä tahansa määrän kohteita. Jos haluat määrittää jonon koon, voit tehdä saman seuraavasti
import queue q1 = queue.Queue(5) #The max size is 5. q1.put(1) q1.put(2) q1.put(3) q1.put(4) q1.put(5) print(q1.full()) # will return true.
lähtö:
True
Nyt jonon koko on 5, eikä se vie enempää kuin 5 kohdetta, ja menetelmä q1.full() palauttaa tosi. Kohteiden lisääminen ei suorita koodia enää.
Poista kohde jonosta
Voit poistaa kohteen jonosta menetelmällä get(). Tämä menetelmä sallii kohteet jonosta kutsuttaessa.
Seuraava esimerkki näyttää, kuinka kohde poistetaan jonosta.
import queue
q1 = queue.Queue()
q1.put(10)
item1 = q1.get()
print('The item removed from the queue is ', item1)
lähtö:
The item removed from the queue is 10
Esimerkki Last In First Out -jonosta
Kun kyseessä on viimeinen ensimmäisenä ulos -jonossa, viimeisenä syötetty elementti tulee ulos ensimmäisenä.
Jotta voisimme työskennellä LIFO:n kanssa, eli olla viimeisenä ensimmäisessä ulostulojonossa, meidän on tuotava jonomoduuli ja käytettävä LifoQueue()-menetelmää.
Lisää ja tuote jonossa
Täällä ymmärrämme kuinka lisätä kohde LIFO-jonoon.
import queue q1 = queue.LifoQueue() q1.put(10)
Sinun on käytettävä put()-metodia LifoQueuessa, kuten yllä olevassa esimerkissä näkyy.
Poista kohde jonosta
Voit poistaa kohteen LIFO-jonosta käyttämällä get() -menetelmää .
import queue
q1 = queue.LifoQueue()
q1.put(10)
item1 = q1.get()
print('The item removed from the LIFO queue is ', item1)
lähtö:
The item removed from the LIFO queue is 10
Lisää enemmän kuin yksi kohde jonoon
Yllä olevissa esimerkeissä olemme nähneet kuinka lisätä yksi kohde ja poistaa kohde FIFO- ja LIFOqueue-kohdissa. Nyt näemme kuinka lisätä useampi kuin yksi kohde ja myös poistaa se.
Lisää ja kohde FIFO-jonoon
import queue
q1 = queue.Queue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Poista kohde FIFO-jonosta
import queue
q1 = queue.Queue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
while not q1.empty():
print("The value is ", q1.get()) # get() will remove the item from the queue.
lähtö:
The value is 0 The value is 1 The value is 2 The value is 3 The value is 4 The value is 5 The value is 6 The value is 7 The value is 8 The value is 9 The value is 10 The value is 11 The value is 12 The value is 13 The value is 14 The value is 15 The value is 16 The value is 17 The value is 18 The value is 19
Lisää ja kohde LIFO-jonoon
import queue
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Poista kohde LIFO-jonosta
import queue
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
while not q1.empty():
print("The value is ", q1.get()) # get() will remove the item from the queue.
lähtö:
The value is 19 The value is 18 The value is 17 The value is 16 The value is 15 The value is 14 The value is 13 The value is 12 The value is 11 The value is 10 The value is 9 The value is 8 The value is 7 The value is 6 The value is 5 The value is 4 The value is 3 The value is 2 The value is 1 The value is 0
Lajittelujono
Seuraava esimerkki näyttää jonojen lajittelun. Lajittelussa käytetty algoritmi on kuplalajittelu.
import queue
q1 = queue.Queue()
#Addingitems to the queue
q1.put(11)
q1.put(5)
q1.put(4)
q1.put(21)
q1.put(3)
q1.put(10)
#using bubble sort on the queue
n = q1.qsize()
for i in range(n):
x = q1.get() # the element is removed
for j in range(n-1):
y = q1.get() # the element is removed
if x > y :
q1.put(y) #the smaller one is put at the start of the queue
else:
q1.put(x) # the smaller one is put at the start of the queue
x = y # the greater one is replaced with x and compared again with nextelement
q1.put(x)
while (q1.empty() == False):
print(q1.queue[0], end = " ")
q1.get()
lähtö:
3 4 5 10 11 21
Reversing-jono
Kääntääksesi jonon, voit käyttää toista jonoa ja rekursiota.
Seuraava esimerkki näyttää kuinka saada jono käänteiseksi.
Esimerkiksi:
import queue
q1 = queue.Queue()
q1.put(11)
q1.put(5)
q1.put(4)
q1.put(21)
q1.put(3)
q1.put(10)
def reverseQueue (q1src, q2dest) :
buffer = q1src.get()
if (q1src.empty() == False) :
reverseQueue(q1src, q2dest) #using recursion
q2dest.put(buffer)
return q2dest
q2dest = queue.Queue()
qReversed = reverseQueue(q1,q2dest)
while (qReversed.empty() == False):
print(qReversed.queue[0], end = " ")
qReversed.get()
lähtö:
10 3 21 4 5 11
Yhteenveto
- Jono on säilö, joka sisältää tietoja. Jonoja on kahta tyyppiä, FIFO ja LIFO.
- FIFO:ssa (First in First out Queue) ensimmäisenä lähtevä elementti tulee ulos ensimmäisenä.
- LIFO (Last in First out Queue) -jonossa viimeisenä syötetty elementti tulee ulos ensimmäisenä.
- Jonossa oleva nimike lisätään put(item)-menetelmällä.
- Kohteen poistamiseen käytetään get()-menetelmää.


