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:

Python Köarbete

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)

Python Köarbete

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.

Sammanfatta detta inlägg med: