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:

Python Jonotöitä

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)

Python Jonotöitä

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ää.

Tiivistä tämä viesti seuraavasti: