Pythoni järjekord: FIFO, LIFO näide

Lang L: none (table-of-contents):

Anonim

Mis on Pythoni järjekord?

Järjekord on konteiner, mis hoiab andmeid. Esmalt sisestatud andmed eemaldatakse kõigepealt ja seetõttu nimetatakse järjekorda ka "First in First Out" (FIFO). Järjekorras on kaks otsa ees ja taga. Esemed sisestatakse tagantpoolt ja eemaldatakse esiküljelt.

Selles Pythoni õpetuses saate teada:

  • Mis on Pythoni järjekord?
  • Kuidas Pythoni järjekord töötab?
  • Pythoni järjekorra tüübid
  • Pythoni järjekorra installimine
  • Queue ja LifoQueue klassi sees olevad meetodid
  • Näide First In First Out Queue
  • Viimase sisse esimese välja järjekorra näide
  • Lisage järjekorda rohkem kui 1 üksus
  • Järjekorra sortimine
  • Tagurdamisjärjekord

Kuidas Pythoni järjekord töötab?

Järjekorda saab hõlpsasti võrrelda reaalse näitega, kui palju on inimesi, kes ootavad piletileti järjekorras, kõigepealt saab pileti esimene inimene, kellele järgneb järgmine inimene ja nii edasi. Sama loogika kehtib ka järjekorraandmete struktuuri kohta.

Siin on järjekorra skemaatiline esitus:

Tagumine on koht, kus kaubad on sisestatud sees järjekorda. Selles näites on 7 selle väärtus.

Front on koht, kus objektide järjekorda eemaldatakse. Kui eemaldate üksuse järjekorrast, on esimene saadud element 1, nagu joonisel näidatud.

Punkt 1 sisestati järjekorda esimesena ja eemaldades on see esimene. Seetõttu nimetatakse järjekorda FIRST IN FIRST OUT (FIFO)

Järjekorras eemaldatakse üksused järjekorras ja neid ei saa nende vahelt eemaldada. Te ei saa lihtsalt üksust 5 järjekorrast juhuslikult eemaldada, selleks peate kõik elemendid enne 5. eemaldama. Järjekorras olevad üksused eemaldatakse nende sisestatud järjekorras.

Pythoni järjekorra tüübid

Pythonis on peamiselt kahte tüüpi järjekorda:

  • First in First out Queue: Selle jaoks tuleb esimesena välja esimene element.

    FIFO-ga töötamiseks peate järjekorramoodulist helistama klassi Queue () .

  • Viimane esimeses järjekorras: siin tuleb esimesena välja see element, mis sisestatakse viimasena.

    LIFO-ga töötamiseks peate järjekorramoodulist helistama klassi LifoQueue () .

Pythoni järjekorra installimine

Pythonis on järjekorraga töötamine väga lihtne. Siin on juhised, mida järgida koodis järjekorra kasutamiseks.

1. samm. Peate lihtsalt importima järjekorra mooduli, nagu allpool näidatud:

import queue

Moodul on vaikimisi saadaval Pythoniga ja järjekorraga töötamise alustamiseks pole teil vaja täiendavat installimist. Järjekordi on kahte tüüpi: FIFO (first in first out) ja LIFO (last in first out out).

2. samm. FIFO järjekorraga töötamiseks helistage klassi Järjekord, kasutades allpool näidatud imporditud järjekorra moodulit:

import queueq1 = queue.Queue()

Samm 3) LIFO-järjekorraga töötamiseks helistage klassi LifoQueue (), nagu allpool näidatud:

import queueq1 = queue.LifoQueue()

Queue ja LifoQueue klassi sees olevad meetodid

Järgnevalt on toodud Queue ja LifoQueue klassi sees olevad olulised meetodid:

  • put (item): see paneb üksuse järjekorda.
  • get (): see tagastab teile üksuse järjekorrast.
  • tühi (): see tagastab tõene, kui järjekord on tühi, ja vale, kui üksused on olemas.
  • qsize (): tagastab järjekorra suuruse.
  • full (): tagastab tõese, kui järjekord on täis, muidu vale.

Näide First In First Out Queue

Esimesena esimesena välja tulles tuleb esimesena välja see element, mis läheb esimesena.

Lisage ja lisage järjekorda üksus

Töötagem näites, et üksus järjekorda lisada. Järjekorraga töötamise alustamiseks importige kõigepealt moodulijärjekord, nagu on näidatud allpool toodud näites.

Üksuse lisamiseks võite kasutada put () meetodit, nagu näites näidatud:

import queueq1 = 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ääratleda järjekorra suuruse, saate seda teha järgmiselt

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.

Väljund:

True

Nüüd on järjekorra suurus 5 ja see ei võta rohkem kui 5 üksust ning meetod q1.full () tagastatakse tõesena. Rohkemate üksuste lisamine ei täida koodi enam.

Eemaldage üksus järjekorrast

Üksuse järjekorrast eemaldamiseks võite kasutada meetodit nimega get (). See meetod lubab kutsuda järjekorra üksused.

Järgmine näide näitab, kuidas üksus järjekorrast eemaldada.

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

Viimase sisse esimese välja järjekorra näide

Kui järjekord on viimane esimeses järjekorras, tuleb esimesena välja element, mis sisestatakse viimasena.

LIFO-ga töötamiseks, st viimati esimeses järjekorras, peame importima järjekorra mooduli ja kasutama meetodit LifoQueue ().

Lisage ja lisage järjekorda üksus

Siit saame aru, kuidas üksus LIFO järjekorda lisada.

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

LifoQueue'is peate kasutama put () meetodit, nagu on näidatud ülaltoodud näites.

Eemaldage üksus järjekorrast

Üksuse eemaldamiseks LIFOqueue'ist saate kasutada meetodit get ().

import queueq1 = 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 element ja eemaldada üksus FIFO ja LIFOqueue jaoks. Nüüd näeme, kuidas lisada rohkem kui üks üksus ja ka see eemaldada.

Lisage ja lisage üksus FIFOqueue

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

Eemaldage üksus FIFOqueue'ist

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.

Väljund:

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

Lisage ja lisage üksus LIFOqueue'is

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

Eemaldage üksus LIFOqueue'ist

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. 

Väljund:

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

Järjekorra sortimine

Järgmine näide näitab järjekorra sortimist. Sorteerimiseks kasutatav algoritm on mullide sortimine.

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

Väljund:

3 4 5 10 11 21

Tagurdamisjärjekord

Järjekorra tagurdamiseks võite kasutada teist järjekorda ja rekursiooni.

Järgmine näide näitab, kuidas järjekorda muuta.

Näide:

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

Väljund:

10 3 21 4 5 11

Kokkuvõte:

  • Järjekord on konteiner, mis hoiab andmeid. Järjekorda on kahte tüüpi: FIFO ja LIFO.
  • FIFO (First in First out Queue) puhul tuleb esimesena välja esimene element.
  • LIFO (Last in First out Queue) puhul tuleb viimasena sisestatud element esimesena välja.
  • Järjekorras olev üksus lisatakse put (item) meetodil.
  • Üksuse eemaldamiseks kasutatakse meetodit get ().