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:

Python Järjekord Töö

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

Python Järjekord Töö

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().