Python Järjekord: FIFO, LIFO Näide
Mis on Python Järjekord?
Järjekord on konteiner, mis hoiab andmeid. Esimesena sisestatud andmed eemaldatakse ja seetõttu nimetatakse järjekorda ka "First in First Out" (FIFO). Järjekorral on kaks otsa ees ja taga. Esemed sisestatakse tagant ja eemaldatakse esiküljelt.
Kuidas Python Kas tööjärjekord?
Järjekorda saab hõlpsasti võrrelda reaalse näitega piletikassas järjekorras ootavate inimeste riviga, esimesena saab pileti esimesena seisja, seejärel järgmine ja nii edasi. Sama loogika kehtib ka järjekorra andmestruktuuri kohta.
Siin on järjekorra skemaatiline esitus:
. Taga tähistab punkti, kuhu üksused järjekorda sisestatakse. Selles näites on 7 selle väärtus.
. Ees tähistab punkti, kust üksused järjekorrast eemaldatakse. Kui eemaldate üksuse järjekorrast, on esimene element, mille saate, nagu joonisel näidatud.
Üksus 1 lisati järjekorda esimesena ja eemaldamise ajal tuleb see esimesena välja. Seetõttu nimetatakse järjekorda FIFO (FIRST IN FIRST OUT)
Järjekorras eemaldatakse üksused järjekorras ja neid ei saa vahepealsest eemaldada. Üksust 5 lihtsalt ei saa järjekorrast juhuslikult eemaldada, selleks tuleb eemaldada kõik üksused enne 5. Järjekorras olevad üksused eemaldatakse nende sisestamise järjekorras.
Järjekorra tüübid Python
Seal on peamiselt kahte tüüpi järjekordi Python:
- Esimene järjekorras First out: selleks tuleb esimesena välja element, mis läheb esimesena. FIFO-ga töötamiseks peate helistama Järjekord () klass järjekorramoodulist.
- Last in First Out Queue: siin väljub esimesena element, mis sisestatakse viimasena. LIFO-ga töötamiseks peate helistama LifoQueue() klass järjekorramoodulist.
Python järjekord Paigaldamine
Pythonis on järjekorraga töötamine väga lihtne. Siin on juhised, mida järgida koodis järjekorra kasutamiseks.
Step 1) Peate lihtsalt importima järjekorramooduli, nagu allpool näidatud:
import queue
Moodul on vaikimisi pythoniga saadaval ja järjekorraga töö alustamiseks pole vaja täiendavat installimist. Järjekordi on kahte tüüpi FIFO (esimene sisse esimene välja) ja LIFO (viimane sisse esimene välja).
Step 2) FIFO-järjekorraga töötamiseks helistage Queue-klassile, kasutades alloleval viisil imporditud järjekorramoodulit:
import queue q1 = queue.Queue()
Step 3) LIFO järjekorraga töötamiseks helistage LifoQueue() klassile, nagu allpool näidatud:
import queue q1 = queue.LifoQueue()
Queue ja LifoQueue klassis saadaval olevad meetodid
Järgmised on Queue ja LifoQueue klassis saadaolevad olulised meetodid:
- pane(kaup): See asetab üksuse järjekorda.
- saada (): See tagastab teile järjekorrast üksuse.
- tühi (): Kui järjekord on tühi, tagastab see väärtuse tõene ja üksuste olemasolul väärtuse Väär.
- qsize(): tagastab järjekorra suuruse.
- täis (): tagastab tõene, kui järjekord on täis, vastasel juhul false.
First In First Out Queuu näide
Esimesena väljuva esimesena väljub element, mis läheb esimesena.
Lisa ja üksus järjekorras
Töötame näite kallal, et lisada üksus järjekorda. Järjekorraga töötamise alustamiseks importige esmalt mooduli järjekord, nagu on näidatud allolevas näites.
Üksuse lisamiseks võite kasutada meetodit put(), nagu on näidatud näites:
import queue q1 = queue.Queue() q1.put(10) #this will additem 10 to the queue.
Vaikimisi on järjekorra suurus lõpmatu ja sinna saab lisada suvalise arvu üksusi. Kui soovite määrata järjekorra suurust, saate seda teha järgmiselt
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.
Väljund:
True
Nüüd on järjekorra suurus 5 ja see ei võta rohkem kui 5 üksust ning meetod q1.full() tagastab väärtuse tõene. Rohkemate üksuste lisamine ei käivita koodi enam.
Eemaldage üksus järjekorrast
Üksuse eemaldamiseks järjekorrast saate kasutada meetodit nimega get(). See meetod lubab kutsumisel üksused järjekorrast.
Järgmine näide näitab, kuidas üksust järjekorrast eemaldada.
import queue q1 = queue.Queue() q1.put(10) item1 = q1.get() print('The item removed from the queue is ', item1)
Väljund:
The item removed from the queue is 10
Järjekorra Last In First Out näide
Esimesena väljuva järjekorra viimane puhul väljub viimasena sisestatud element esimesena.
LIFO-ga töötamiseks, st esimeses väljumisjärjekorras viimaseks jäämiseks, peame importima järjekorramooduli ja kasutama meetodit LifoQueue().
Lisa ja üksus järjekorras
Siin saame aru, kuidas lisada üksus LIFO järjekorda.
import queue q1 = queue.LifoQueue() q1.put(10)
Peate LifoQueue'is kasutama put() meetodit, nagu on näidatud ülaltoodud näites.
Eemaldage üksus järjekorrast
Üksuse eemaldamiseks LIFOqueue'ist saate kasutada meetodit get().
import queue q1 = queue.LifoQueue() q1.put(10) item1 = q1.get() print('The item removed from the LIFO queue is ', item1)
Väljund:
The item removed from the LIFO queue is 10
Lisage järjekorda rohkem kui 1 üksus
Ülaltoodud näidetes oleme näinud, kuidas lisada üks üksus ja eemaldada üksus FIFO ja LIFOqueue jaoks. Nüüd näeme, kuidas lisada rohkem kui üks üksus ja see ka eemaldada.
Lisa ja üksus FIFO-järjekorda
import queue q1 = queue.Queue() for i in range(20): q1.put(i) # this will additem from 0 to 20 to the queue
Eemaldage üksus FIFO-järjekorrast
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.
Väljund:
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
Lisa ja üksus LIFOjärjekorda
import queue q1 = queue.LifoQueue() for i in range(20): q1.put(i) # this will additem from 0 to 20 to the queue
Eemaldage üksus LIFO järjekorrast
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.
Väljund:
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
Sorteerimisjärjekord
Järgmine näide näitab järjekorra sorteerimist. Sorteerimiseks kasutatav algoritm on mullsorteerimine.
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()
Väljund:
3 4 5 10 11 21
Revsaatmisjärjekord
Järjekorra ümberpööramiseks võite kasutada teist järjekorda ja rekursiooni.
Järgmine näide näitab, kuidas järjekorda ümber pöörata.
Näide:
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()
Väljund:
10 3 21 4 5 11
kokkuvõte
- Järjekord on konteiner, mis hoiab andmeid. Järjekordi on kahte tüüpi, FIFO ja LIFO.
- FIFO (First in First Out Queue) puhul tuleb esimesena välja element, mis läheb esimesena.
- LIFO (Last in First out Queue) puhul väljub esimesena element, mis sisestatakse viimasena.
- Järjekorras olev üksus lisatakse put(item) meetodil.
- Üksuse eemaldamiseks kasutatakse meetodit get().