Python Kø: FIFO, LIFO Eksempel

Hvad er Python Kø?

En kø er en container, der indeholder data. De data, der indtastes først, vil blive fjernet først, og derfor kaldes en kø også "First in First Out" (FIFO). Køen har to ender foran og bagved. Varerne indtastes bagfra og fjernes fra forsiden.

Hvordan Python Kø arbejde?

Køen kan let sammenlignes med eksemplet fra den virkelige verden, rækken af ​​mennesker, der venter i en kø ved billetskranken, den person, der står først, får billetten først, efterfulgt af den næste person og så videre. Den samme logik gælder også for køens datastruktur.

Her er en diagrammatisk fremstilling af køen:

Python Kø arbejde

Rear repræsenterer det punkt, hvor elementerne er indsat i køen. I dette eksempel er 7 værdien for det.

Front repræsenterer det punkt, hvor emnerne fra køen vil blive fjernet. Fjerner du en vare fra køen, er det første element, du får, 1, som vist på figuren.

Vare 1 var den første, der blev indsat i køen, og mens den fjernes, er den den første, der kommer ud. Derfor kaldes køen FIRST IN FIRST OUT (FIFO)

Python Kø arbejde

I en kø fjernes varerne i rækkefølge og kan ikke fjernes ind imellem. Du kan bare ikke fjerne element 5 tilfældigt fra køen, for at gøre det skal du fjerne alle elementer før 5. Varerne i køen vil blive fjernet i den rækkefølge, de indsættes.

Typer af kø i Python

Der er hovedsageligt to typer kø i Python:

  • Først i først ud-kø: Til dette vil det element, der går først, være det første, der kommer ud. For at arbejde med FIFO skal du kalde Kø() klasse fra kømodul.
  • Sidst ind først ud-kø: Herovre vil det element, der indtastes sidst, være det første, der kommer ud. For at arbejde med LIFO skal du ringe LifoQueue() klasse fra kømodulet.

Python kø Installation

Det er meget nemt at arbejde med kø i python. Her er de trin, du skal følge for at gøre brug af kø i din kode.

Trin 1) Du skal blot importere kømodulet, som vist nedenfor:

import queue

Modulet er tilgængeligt som standard med python, og du behøver ingen yderligere installation for at begynde at arbejde med køen. Der er 2 typer kø-FIFO (først ind først ud) og LIFO (sidst ind først ud).

Trin 2) For at arbejde med FIFO-kø skal du kalde klassen Queue ved hjælp af kømodulet importeret som vist nedenfor:

import queue
q1 = queue.Queue()

Trin 3) For at arbejde med LIFO-kø skal du kalde klassen LifoQueue() som vist nedenfor:

import queue
q1 = queue.LifoQueue()

Metoder tilgængelige i Queue- og LifoQueue-klassen

Følgende er de vigtige metoder, der er tilgængelige i Queue- og LifoQueue-klassen:

  • put(emne): Dette vil sætte varen i køen.
  • få(): Dette vil returnere dig en vare fra køen.
  • tom(): Det vil returnere sandt, hvis køen er tom og falsk, hvis der er varer til stede.
  • qsize(): returnerer størrelsen på køen.
  • fuld(): returnerer sand, hvis køen er fuld, ellers falsk.

Eksempel på First In First Out Queue

I tilfælde af først ind først ud, vil det element, der går først, være det første, der kommer ud.

Tilføj og vare i en kø

Lad os arbejde på et eksempel for at tilføje et element i en kø. For at begynde at arbejde med køen skal du først importere modulkøen, som vist i eksemplet nedenfor.

For at tilføje et element kan du bruge put() metoden som vist i eksemplet:

import queue
q1 = queue.Queue()
q1.put(10) #this will additem 10 to the queue.

Som standard er størrelsen på køen uendelig, og du kan tilføje et hvilket som helst antal elementer til den. Hvis du ønsker at definere størrelsen af ​​køen, kan det samme gøres som følger

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.

Output:

True

Nu er køens størrelse 5, og det vil ikke tage mere end 5 elementer, og metoden q1.full() vil returnere sand. Tilføjelse af flere elementer vil ikke udføre koden yderligere.

Fjern en vare fra køen

For at fjerne et element fra køen kan du bruge metoden kaldet get(). Denne metode tillader elementer fra køen, når de kaldes.

Følgende eksempel viser, hvordan du fjerner en vare fra køen.

import queue
q1 = queue.Queue()
q1.put(10)

item1 = q1.get()

print('The item removed from the queue is ', item1)

Output:

The item removed from the queue is  10

Sidst ind først ud kø Eksempel

I tilfælde af sidst i køen først ud, vil det element, der indtastes sidst, være det første, der kommer ud.

For at arbejde med LIFO, dvs. sidst i køen først ud, skal vi importere kømodulet og gøre brug af LifoQueue() metoden.

Tilføj og vare i en kø

Her vil vi forstå, hvordan man tilføjer en vare til LIFO-køen.

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

Du skal bruge put() metoden på LifoQueue, som vist i ovenstående eksempel.

Fjern en vare fra køen

For at fjerne et element fra LIFO-køen kan du bruge get() metoden.

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

item1 = q1.get()

print('The item removed from the LIFO queue is ', item1)

Output:

The item removed from the LIFO queue is  10

Tilføj mere end 1 vare i en kø

I ovenstående eksempler har vi set, hvordan man tilføjer et enkelt element og fjerner elementet for FIFO og LIFOqueue. Nu vil vi se, hvordan du tilføjer mere end et element og også fjerner det.

Tilføj og element 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

Fjern et element fra FIFO-køen

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.

Output:

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

Tilføj og vare 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

Fjern en vare fra LIFO-køen

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.

Output:

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ølgende eksempel viser køsortering. Algoritmen, der bruges til sortering, er boblesortering.

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

Output:

3 4 5 10 11 21

Reversing Kø

For at vende køen kan du gøre brug af en anden kø og rekursion.

Følgende eksempel viser, hvordan man får vendt køen.

Eksempel:

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

Output:

10 3 21 4 5 11

Resumé

  • En kø er en container, der indeholder data. Der er to typer kø, FIFO og LIFO.
  • For en FIFO (First in First Out Queue) vil det element, der går først, være det første, der kommer ud.
  • For en LIFO (Last in First Out Queue) vil det element, der indtastes sidst, være det første, der kommer ud.
  • Et element i en kø tilføjes ved hjælp af put(item) metoden.
  • For at fjerne et element, bruges get() metoden.