Vad är Python Queue?
En kö är en behållare som innehåller data. De data som matas in först kommer att tas bort först och därför kallas en kö också "First in First Out" (FIFO). Kön har två ändar fram och bak. Föremålen matas in bakifrån och tas bort från framsidan.
I denna Python-handledning lär du dig:
- Vad är Python Queue?
- Hur fungerar Python Queue?
- Typer av kö i Python
- Installation av Python-kö
- Metoder tillgängliga inom kö- och LifoQueue-klassen
- Först i första utsexempel
- Senaste i första utkön Exempel
- Lägg till mer än 1 objekt i en kö
- Sorteringskö
- Omvänd kö
Hur fungerar Python Queue?
Kön kan enkelt jämföras med det verkliga exemplet, raden av människor som väntar i en kö vid biljettdisken, den som står först får biljetten först, följt av nästa person och så vidare. Samma logik gäller även ködatastrukturen.
Här är en schematisk bild av kö:
Den bakre representerar den punkt där objekten monterad i kön. I detta exempel är 7 värde för det.
Den Front representerar den punkt där objekt från kön kommer att tas bort. Om du tar bort ett objekt från kön är det första elementet du får 1, som visas i figuren.
Objekt 1 var den första som infördes i kön, och medan den togs bort är den första som kom ut. Därför kallas kön FIRST IN FIRST OUT (FIFO)
I en kö tas objekten bort i ordning och kan inte tas bort mellan. Du kan bara inte ta bort objekt 5 slumpmässigt från kön, för att göra det måste du ta bort alla objekt före 5. Objekten i kön kommer att tas bort i den ordning de infogas.
Typer av kö i Python
Det finns huvudsakligen två typer av köer i Python:
- First in First out Queue: För detta kommer det element som går först att vara det första som kommer ut.
För att arbeta med FIFO måste du ringa till Queue () -klassen från kömodulen.
- Sista i First out Queue: Här kommer elementet som matas in sist att vara det första som kommer ut.
För att arbeta med LIFO måste du ringa LifoQueue () -klassen från kömodulen.
Installation av Python-kö
Det är väldigt enkelt att arbeta med kö i python. Här är stegen att följa för att använda kön i din kod.
Steg 1) Du behöver bara importera kömodulen, som visas nedan:
import queue
Modulen är tillgänglig som standard med python, och du behöver ingen ytterligare installation för att börja arbeta med kön. Det finns två typer av kö FIFO (först in först ut) och LIFO (sist först först ut).
Steg 2) För att arbeta med FIFO-kö, ring Köklassen med hjälp av kömodulen som importeras enligt nedan:
import queueq1 = queue.Queue()
Steg 3) För att arbeta med LIFO-kö, ring LifoQueue () -klassen enligt nedan:
import queueq1 = queue.LifoQueue()
Metoder tillgängliga inom kö- och LifoQueue-klassen
Följande är de viktiga metoderna som finns tillgängliga i klassen Queue och LifoQueue:
- put (item): Detta kommer att placera objektet i kön.
- get (): Detta returnerar ett objekt från kön.
- tom (): Det kommer att återgå till sant om kön är tom och falsk om objekt finns.
- qsize (): returnerar storleken på kön.
- full (): returnerar true om kön är full, annars falsk.
Först i första utsexempel
När det gäller först in först ut kommer det element som går först att vara det första som kommer ut.
Lägg till och posta i en kö
Låt oss arbeta med ett exempel för att lägga till ett objekt i en kö. För att börja arbeta med kön importerar du först modulkön, som visas i exemplet nedan.
För att lägga till ett objekt kan du använda metoden put () som visas i exemplet:
import queueq1 = queue.Queue()q1.put(10) #this will additem 10 to the queue.
Som standard är köns storlek oändlig och du kan lägga till valfritt antal objekt i den. Om du vill definiera storleken på kön kan samma göras enligt följande
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.
Produktion:
True
Nu är storleken på kön 5 och det tar inte mer än 5 objekt, och metoden q1.full () kommer att återgå till true. Om du lägger till fler objekt körs koden inte längre.
Ta bort ett objekt från kön
För att ta bort ett objekt från kön kan du använda metoden som heter get (). Denna metod tillåter objekt från kön när de anropas.
Följande exempel visar hur man tar bort ett objekt från kön.
import queueq1 = queue.Queue()q1.put(10)item1 = q1.get()print('The item removed from the queue is ', item1)
Produktion:
The item removed from the queue is 10
Senaste i första utkön Exempel
När det gäller sista i den första utkön kommer det element som sätts in sist att vara den första som kommer ut.
För att arbeta med LIFO, dvs sist i den första utkön, måste vi importera kömodulen och använda LifoQueue () -metoden.
Lägg till och posta i en kö
Här kommer vi att förstå hur man lägger till ett objekt i LIFO-kön.
import queueq1 = queue.LifoQueue()q1.put(10)
Du måste använda put () -metoden på LifoQueue, som visas i exemplet ovan.
Ta bort ett objekt från kön
För att ta bort ett objekt från LIFOqueue kan du använda metoden get ().
import queueq1 = queue.LifoQueue()q1.put(10)item1 = q1.get()print('The item removed from the LIFO queue is ', item1)
Produktion:
The item removed from the LIFO queue is 10
Lägg till mer än 1 objekt i en kö
I exemplen ovan har vi sett hur man lägger till ett enda objekt och tar bort objektet för FIFO och LIFOqueue. Nu kommer vi att se hur man lägger till mer än ett objekt och även tar bort det.
Lägg till och posta 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
Ta bort ett objekt från 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.
Produktion:
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
Lägg till och posta 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
Ta bort ett objekt från 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.
Produktion:
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öljande exempel visar kösorteringen. Algoritmen som används för sortering är bubblasortering.
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()
Produktion:
3 4 5 10 11 21
Omvänd kö
För att vända kön kan du använda en annan kö och rekursion.
Följande exempel visar hur du kan vända kön.
Exempel:
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()
Produktion:
10 3 21 4 5 11
Sammanfattning:
- En kö är en behållare som innehåller data. Det finns två typer av kö, FIFO och LIFO.
- För en FIFO (First in First out Queue) kommer elementet som går först att vara det första som kommer ut.
- För en LIFO (Last in First out Queue) kommer elementet som matas in sist att vara det första som kommer ut.
- Ett objekt i en kö läggs till med metoden put (artikel).
- För att ta bort ett objekt används metoden get ().