Hva er Python Queue?
En kø er en container som inneholder data. Dataene som legges inn først blir fjernet først, og dermed kalles en kø også "First in First Out" (FIFO). Køen har to ender foran og bak. Elementene føres inn bakfra og fjernes fra forsiden.
I denne Python-opplæringen lærer du:
- Hva er Python Queue?
- Hvordan fungerer Python Queue?
- Typer kø i Python
- Python køinstallasjon
- Metoder tilgjengelig i kø- og LifoQueue-klassen
- Først i første ut køeksempel
- Last In First Out kø Eksempel
- Legg til mer enn 1 element i en kø
- Sorteringskø
- Omvendt kø
Hvordan fungerer Python Queue?
Køen kan enkelt sammenlignes med det virkelige eksemplet, linjen til folk som venter i kø ved billettdisken, den som står først får billetten først, etterfulgt av neste person og så videre. Den samme logikken gjelder også kødatastrukturen.
Her er en diagrammatisk fremstilling av køen:
Den bakre representerer det punkt hvor elementene er stukket inn i køen. I dette eksemplet er 7 verdi for det.
The Front representerer det punktet der elementer fra køen vil bli fjernet. Hvis du fjerner et element fra køen, er det første elementet du får 1, som vist på figuren.
Element 1 var den første som ble satt inn i køen, og mens den fjernes, er den første som kom ut. Derfor kalles køen FIRST IN FIRST OUT (FIFO)
I en kø fjernes varene i rekkefølge og kan ikke fjernes fra mellom. Du kan bare ikke fjerne element 5 tilfeldig fra køen, for å gjøre det må du fjerne alle elementene før 5. Elementene i køen blir fjernet i den rekkefølgen de settes inn.
Typer kø i Python
Det er hovedsakelig to typer køer i Python:
- Først i først ut kø: For dette vil elementet som går først være det første som kommer ut.
For å jobbe med FIFO, må du ringe Queue () -klassen fra kømodulen.
- Siste i først ut kø: Her borte vil elementet som er angitt sist være det første som kommer ut.
For å jobbe med LIFO, må du ringe LifoQueue () -klassen fra kømodulen .
Python køinstallasjon
Det er veldig enkelt å jobbe med kø i python. Her er trinnene du må følge for å bruke kø i koden din.
Trinn 1) Du må bare importere kømodulen, som vist nedenfor:
import queue
Modulen er tilgjengelig som standard med python, og du trenger ikke noen ekstra installasjon for å begynne å jobbe med køen. Det er to typer kø FIFO (først inn først ut) og LIFO (sist først inn først).
Trinn 2) For å jobbe med FIFO-kø, ring kø-klassen ved hjelp av kømodulen som er importert som vist nedenfor:
import queueq1 = queue.Queue()
Trinn 3) For å jobbe med LIFO-kø, ring LifoQueue () -klassen som vist nedenfor:
import queueq1 = queue.LifoQueue()
Metoder tilgjengelig i kø- og LifoQueue-klassen
Følgende er de viktige metodene som er tilgjengelige i klassen Queue og LifoQueue:
- put (item): Dette vil sette elementet inne i køen.
- get (): Dette vil gi deg et element fra køen.
- tom (): Det vil returnere sant hvis køen er tom og falsk hvis gjenstander er til stede.
- qsize (): returnerer størrelsen på køen.
- full (): returnerer true hvis køen er full, ellers falsk.
Først i første ut køeksempel
Når det gjelder først inn først ut, vil elementet som går først være det første som kommer ut.
Legg til og post i en kø
La oss jobbe med et eksempel for å legge til et element i en kø. For å begynne å jobbe med køen, må du først importere modulkøen, som vist i eksemplet nedenfor.
For å legge til et element, kan du bruke put () -metoden som vist i eksemplet:
import queueq1 = queue.Queue()q1.put(10) #this will additem 10 to the queue.
Som standard er køens størrelse uendelig, og du kan legge til et hvilket som helst antall elementer i den. Hvis du vil definere størrelsen på køen, kan det samme gjøres som følger
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.
Produksjon:
True
Nå er køens størrelse 5, og det tar ikke mer enn 5 elementer, og metoden q1.full () vil returnere true. Hvis du legger til flere elementer, utføres ikke koden lenger.
Fjern et element fra køen
For å fjerne et element fra køen, kan du bruke metoden som heter get (). Denne metoden tillater gjenstander fra køen når de blir ringt.
Følgende eksempel viser hvordan du fjerner et element fra køen.
import queueq1 = queue.Queue()q1.put(10)item1 = q1.get()print('The item removed from the queue is ', item1)
Produksjon:
The item removed from the queue is 10
Last In First Out kø Eksempel
Når det gjelder siste i første ut-køen, vil elementet som er angitt sist, være det første som kommer ut.
For å jobbe med LIFO, dvs. sist i den første ut-køen, må vi importere kømodulen og bruke LifoQueue () -metoden.
Legg til og post i en kø
Her vil vi forstå hvordan du legger til et element i LIFO-køen.
import queueq1 = queue.LifoQueue()q1.put(10)
Du må bruke put () -metoden på LifoQueue, som vist i eksemplet ovenfor.
Fjern et element fra køen
For å fjerne et element fra LIFOqueue kan du bruke get () -metoden.
import queueq1 = queue.LifoQueue()q1.put(10)item1 = q1.get()print('The item removed from the LIFO queue is ', item1)
Produksjon:
The item removed from the LIFO queue is 10
Legg til mer enn 1 element i en kø
I eksemplene ovenfor har vi sett hvordan du legger til et enkelt element og fjerner elementet for FIFO og LIFOqueue. Nå vil vi se hvordan du legger til mer enn ett element og også fjerner det.
Legg til og element i en FIFOqueue
import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue
Fjern et element fra FIFOqueue
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.
Produksjon:
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
Legg til og element i en LIFOqueue
import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue
Fjern et element fra LIFOqueue
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.
Produksjon:
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
Sorteringskø
Følgende eksempel viser køsorteringen. Algoritmen som brukes til sortering er boblesortering.
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()
Produksjon:
3 4 5 10 11 21
Omvendt kø
For å reversere køen, kan du benytte deg av en annen kø og rekursjon.
Følgende eksempel viser hvordan du kan reversere køen.
Eksempel:
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()
Produksjon:
10 3 21 4 5 11
Sammendrag:
- En kø er en container som inneholder data. Det er to typer kø, FIFO og LIFO.
- For en FIFO (First in First out Queue) vil elementet som går først være det første som kommer ut.
- For en LIFO (Last in First out Queue) vil elementet som er angitt sist, være det første som kommer ut.
- Et element i en kø legges til ved bruk av put (metoden) metoden.
- For å fjerne et element, brukes get () -metoden.