Python-jono: FIFO, LIFO-esimerkki

Sisällysluettelo:

Anonim

Mikä on Python-jono?

Jono on säilö, joka sisältää tietoja. Ensin syötetyt tiedot poistetaan ensin, joten jonoa kutsutaan myös nimellä "First in First Out" (FIFO). Jonossa on kaksi päätä edessä ja takana. Kohteet syötetään takaa ja poistetaan etupuolelta.

Tässä Python-opetusohjelmassa opit:

  • Mikä on Python-jono?
  • Kuinka Python-jono toimii?
  • Jonotyypit Pythonissa
  • Python-jonon asennus
  • Queue- ja LifoQueue-luokissa käytettävissä olevat menetelmät
  • Esimerkki First In First Out -jonossa
  • Esimerkki viimeisen ensimmäisen lähtöjonon jonosta
  • Lisää yli 1 kohde jonoon
  • Lajittelujono
  • Peruutusjono

Kuinka Python-jono toimii?

Jonoa voidaan helposti verrata reaalimaailman esimerkkijonoon jonossa odottavista ihmisistä lipputiskillä, ensin seisova saa lipun ensin, seuraava henkilö ja niin edelleen. Sama logiikka pätee myös jonotietorakenteeseen.

Tässä on jonon kaavamainen esitys:

Taka edustaa piste, jonka kohdat on työnnetty jonoon. Tässä esimerkissä 7 on sen arvo.

Front edustaa kohtaa, jossa kohteita jonosta poistetaan. Jos poistat kohteen jonosta, ensimmäinen saamasi elementti on 1, kuten kuvassa näkyy.

Kohde 1 lisättiin ensimmäiseksi jonoon, ja poistettaessa se tuli ensin ulos. Siksi jonoa kutsutaan FIRST IN FIRST OUT (FIFO)

Jonossa kohteet poistetaan järjestyksessä, eikä niitä voida poistaa väliltä. Et voi vain poistaa kohdetta 5 satunnaisesti jonosta, tällöin sinun on poistettava kaikki kohteet ennen 5. Jonossa olevat kohteet poistetaan niiden lisäysjärjestyksessä.

Jonotyypit Pythonissa

Pythonissa on pääasiassa kahden tyyppisiä jonoja:

  • First in First out Queue: Tätä varten ensin menevä elementti tulee ensin ulos.

    Jos haluat työskennellä FIFOn kanssa, sinun on soitettava jono () -luokka jonomoduulista.

  • Last in First out Queue: Tässä täällä viimeisenä syötetty elementti tulee ensimmäisenä ulos.

    Jos haluat työskennellä LIFO: n kanssa, sinun on soitettava LifoQueue () -luokka jonomoduulista .

Python-jonon asennus

Jonon käsittely pythonissa on erittäin helppoa. Tässä on vaiheet, joita on noudatettava, jotta voit käyttää jonoa koodissasi.

Vaihe 1) Sinun tarvitsee vain tuoda jonomoduuli alla olevan kuvan mukaisesti:

import queue

Moduuli on oletusarvoisesti saatavana pythonin kanssa, eikä sinun tarvitse mitään lisäasennuksia jonon kanssa työskentelemisen aloittamiseksi. Jonoja on 2 tyyppiä: FIFO (first in first out) ja LIFO (last in first out).

Vaihe 2) Jos haluat työskennellä FIFO-jonon kanssa, soita jonoluokkaan käyttämällä alla tuotua jonomoduulia:

import queueq1 = queue.Queue()

Vaihe 3) Jos haluat työskennellä LIFO-jonon kanssa, soita LifoQueue () -luokkaan alla olevan kuvan mukaisesti:

import queueq1 = queue.LifoQueue()

Queue- ja LifoQueue-luokissa käytettävissä olevat menetelmät

Seuraavassa on tärkeitä menetelmiä, jotka ovat käytettävissä Queue- ja LifoQueue-luokissa:

  • put (item): Tämä asettaa kohteen jonoon.
  • get (): Tämä palauttaa kohteen jonosta.
  • tyhjä (): Se palauttaa arvon tosi, jos jono on tyhjä ja epätosi, jos kohteita on läsnä.
  • qsize (): palauttaa jonon koon.
  • full (): palauttaa arvon tosi, jos jono on täynnä, muuten epätosi.

Esimerkki First In First Out -jonossa

Ensimmäisessä ensimmäisessä ulostulossa ensin menevä elementti tulee ensin ulos.

Lisää ja lisää jonoon

Työskentelemme esimerkin kanssa kohteen lisäämiseksi jonoon. Aloita jonon kanssa työskenteleminen tuomalla ensin moduulijono alla olevan esimerkin mukaisesti.

Voit lisätä kohteen käyttämällä put () -menetelmää esimerkissä esitetyllä tavalla:

import queueq1 = 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, se voidaan tehdä seuraavasti

import queueq1 = 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.

Tuotos:

True

Jonon koko on nyt 5, eikä se vie enempää kuin 5 kohdetta, ja menetelmä q1.full () palauttaa arvon true. Lisää muita kohteita ei suoriteta koodia enää.

Poista kohde jonosta

Voit poistaa kohteen jonosta käyttämällä menetelmää nimeltä get (). Tämä menetelmä sallii jonossa olevat kohteet, kun niitä kutsutaan.

Seuraava esimerkki näyttää, kuinka kohde poistetaan jonosta.

import queueq1 = queue.Queue()q1.put(10)item1 = q1.get()print('The item removed from the queue is ', item1)

Tuotos:

The item removed from the queue is 10

Esimerkki viimeisen ensimmäisen lähtöjonon jonosta

Jos kyseessä on viimeinen ensimmäisessä jonossa, viimeiseksi syötetty elementti tulee ensimmäisenä ulos.

Jotta voisimme työskennellä LIFO: n kanssa eli viimeisenä ensimmäisessä jonossa, meidän on tuotava jonomoduuli ja käytettävä LifoQueue () -menetelmää.

Lisää ja lisää jonoon

Täällä ymmärretään, miten kohde lisätään LIFO-jonoon.

import queueq1 = queue.LifoQueue()q1.put(10)

Sinun on käytettävä put () -menetelmää LifoQueue-ohjelmassa, kuten yllä olevassa esimerkissä on esitetty.

Poista kohde jonosta

Voit poistaa kohteen LIFOqueue-sovelluksesta käyttämällä get () -menetelmää.

import queueq1 = queue.LifoQueue()q1.put(10)item1 = q1.get()print('The item removed from the LIFO queue is ', item1)

Tuotos:

The item removed from the LIFO queue is 10

Lisää yli 1 kohde jonoon

Yllä olevissa esimerkeissä olemme nähneet, kuinka lisätä yksi kohde ja poistaa kohde FIFO- ja LIFOqueue-sovelluksia varten. Nyt näemme, kuinka voit lisätä useamman kuin yhden kohteen ja poistaa sen.

Lisää ja lisää kohde FIFOqueueen

import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue

Poista kohde FIFOqueue-sovelluksesta

import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue.

Tuotos:

The value is 0The value is 1The value is 2The value is 3The value is 4The value is 5The value is 6The value is 7The value is 8The value is 9The value is 10The value is 11The value is 12The value is 13The value is 14The value is 15The value is 16The value is 17The value is 18The value is 19

Lisää ja lisää kohde LIFOqueueen

import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue

Poista kohde LIFOqueue-sovelluksesta

import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue. 

Tuotos:

The value is 19The value is 18The value is 17The value is 16The value is 15The value is 14The value is 13The value is 12The value is 11The value is 10The value is 9The value is 8The value is 7The value is 6The value is 5The value is 4The value is 3The value is 2The value is 1The value is 0

Lajittelujono

Seuraava esimerkki näyttää jonojen lajittelun. Lajittelussa käytetty algoritmi on kuplalajittelu.

import queueq1 = queue.Queue()#Addingitems to the queueq1.put(11)q1.put(5)q1.put(4)q1.put(21)q1.put(3)q1.put(10)#using bubble sort on the queuen = q1.qsize()for i in range(n):x = q1.get() # the element is removedfor j in range(n-1):y = q1.get() # the element is removedif x> y :q1.put(y) #the smaller one is put at the start of the queueelse:q1.put(x) # the smaller one is put at the start of the queuex = y # the greater one is replaced with x and compared again with nextelementq1.put(x)while (q1.empty() == False):print(q1.queue[0], end = " ")q1.get()

Tuotos:

3 4 5 10 11 21

Peruutusjono

Jonon kääntämiseksi voit käyttää toista jonoa ja rekursiota.

Seuraava esimerkki osoittaa, kuinka jono käännetään.

Esimerkki:

import queueq1 = 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 recursionq2dest.put(buffer)return q2destq2dest = queue.Queue()qReversed = reverseQueue(q1,q2dest)while (qReversed.empty() == False):print(qReversed.queue[0], end = " ")qReversed.get()

Tuotos:

10 3 21 4 5 11

Yhteenveto:

  • Jono on säilö, joka sisältää tietoja. Jonoa on kahta tyyppiä, FIFO ja LIFO.
  • FIFO: lle (First in First out Queue) ensimmäinen elementti tulee ensin.
  • LIFO (Last in First out Queue) -elementti, joka syötetään viimeiseksi, tulee ensin ulos.
  • Jonossa oleva kohde lisätään put (item) -menetelmällä.
  • Kohteen poistamiseksi käytetään get () -menetelmää.