Python Kö: FIFO, LIFO Exempel
Vad är Python Kö?
En kö är en behållare som innehåller data. Den data som läggs in först kommer att tas bort först, och därför kallas en kö även för "First in First Out" (FIFO). Kön har två ändar fram och bak. Föremålen matas in från baksidan och tas bort från framsidan.
Hur fungerar Python Köjobb?
Kön kan enkelt jämföras med det verkliga exemplet, raden av människor som står i 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 för ködatastrukturen.
Här är en schematisk representation av kön:
Ocuco-landskapet Bakre representerar punkten där objekten infogas i kön. I det här exemplet är 7 värdet för det.
Ocuco-landskapet Front representerar den punkt där objekten från kön kommer att tas bort. Om du tar bort ett föremål från kön är det första elementet du får 1, som visas i figuren.
Artikel 1 var den första som infogades i kön, och när den tas bort är den den första som kom ut. Därför kallas kön FIRST IN FIRST OUT (FIFO)
I en kö tas föremålen bort i ordning och kan inte tas bort däremellan. Du kan helt enkelt 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 främst två typer av köer in Python:
- Först in först ut kö: För detta kommer elementet som går först att komma ut först. För att arbeta med FIFO måste du ringa Kö() klass från kömodul.
- Sist in först ut kö: Här borta kommer elementet som skrivs sist att vara det första som kommer ut. För att arbeta med LIFO måste du ringa LifoQueue() klass från kömodulen.
Python kö Installation
Det är väldigt enkelt att arbeta med kö i python. Här är stegen att följa för att använda kö 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 2 typer av kö-FIFO (först in först ut) och LIFO (sist in först ut).
Steg 2) För att arbeta med FIFO-kö, anropa klassen Queue med hjälp av kömodulen som importeras enligt nedan:
import queue q1 = queue.Queue()
Steg 3) För att arbeta med LIFO-kö, anrop klassen LifoQueue() enligt nedan:
import queue q1 = queue.LifoQueue()
Metoder tillgängliga i klassen Queue och LifoQueue
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.
- skaffa sig(): Detta kommer att returnera dig en vara från kön.
- tömma(): Det kommer att returnera sant om kön är tom och falskt om objekt finns.
- qsize(): returnerar storleken på kön.
- full(): returnerar sant om kön är full, annars falskt.
Först in först ut kö Exempel
När det gäller först in först ut kommer elementet som går först att komma ut först.
Lägg till och objekt 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, importera först modulkön, som visas i exemplet nedan.
För att lägga till ett objekt kan du använda put()-metoden som visas i exemplet:
import queue q1 = queue.Queue() q1.put(10) #this will additem 10 to the queue.
Som standard är storleken på kön oändlig och du kan lägga till valfritt antal objekt till den. Om du vill definiera storleken på kön kan samma sak göras enligt följande
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.
Produktion:
True
Nu är köns storlek 5, och det tar inte mer än 5 objekt, och metoden q1.full() kommer att returnera true. Att lägga till fler objekt kommer inte att exekvera koden längre.
Ta bort ett föremål 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 queue
q1 = 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
Sist in först ut kö Exempel
I fallet med sist i första ut-kön kommer elementet som skrivs sist att vara det första som kommer ut.
För att arbeta med LIFO, dvs sist i först ut-kön, måste vi importera kömodulen och använda metoden LifoQueue().
Lägg till och objekt i en kö
Här kommer vi att förstå hur man lägger till ett föremål i LIFO-kön.
import queue q1 = queue.LifoQueue() q1.put(10)
Du måste använda put()-metoden på LifoQueue, som visas i exemplet ovan.
Ta bort ett föremål från kön
För att ta bort ett objekt från LIFOqueue kan du använda metoden get() .
import queue
q1 = 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 objekt i en FIFO-kö
import queue
q1 = 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 FIFO-kön
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.
Produktion:
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
Lägg till och objekt i en LIFO-kö
import queue
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Ta bort ett föremål från LIFO-kön
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.
Produktion:
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
Sorteringskö
Följande exempel visar kösortering. Algoritmen som används för sortering är bubbelsortering.
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()
Produktion:
3 4 5 10 11 21
Reversing kö
För att vända kön kan du använda en annan kö och rekursion.
Följande exempel visar hur man får kön omvänd.
Exempelvis:
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()
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 komma ut först.
- För en LIFO (Last in First Out Queue) kommer elementet som skrivs in sist att vara det första som kommer ut.
- Ett objekt i en kö läggs till med put(item)-metoden.
- För att ta bort ett objekt används get()-metoden.


