Hvad er Python Queue?
En kø er en container, der indeholder data. De data, der indtastes først, fjernes først, og derfor kaldes en kø også "First in First Out" (FIFO). Køen har to ender for og bag. Varerne indtastes bagfra og fjernes fra forsiden.
I denne Python-tutorial lærer du:
- Hvad er Python Queue?
- Hvordan fungerer Python Queue?
- Typer af kø i Python
- Installation af Python-kø
- Metoder til rådighed inden for klasse Kø og LifoQueue
- Først i første ude køeksempel
- Sidste i første udkø Eksempel
- Tilføj mere end 1 element i en kø
- Sorteringskø
- Omvendt kø
Hvordan fungerer Python Queue?
Køen kan let sammenlignes med det virkelige verdenseksempel, den linje af mennesker, der venter i en kø ved billetdisken, 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å kødatastrukturen.
Her er en diagrammatisk gengivelse af kø:
Den bageste repræsenterer det punkt, hvor emnerne er indsat inde i køen. I dette eksempel er 7 værdi for det.
Den Front repræsenterer det punkt, hvor elementer fra køen vil blive fjernet. Hvis du fjerner et element fra køen, er det første element, du får, 1, som vist i figuren.
Punkt 1 var den første, der blev indsat i køen, og mens den blev fjernet, var den første, der kom ud. Derfor kaldes køen FIRST IN FIRST OUT (FIFO)
I en kø fjernes emnerne i rækkefølge og kan ikke fjernes imellem. Du kan bare ikke fjerne element 5 tilfældigt fra køen, for at gøre det bliver du nødt til at fjerne alle elementerne inden 5. Varerne i køen fjernes i den rækkefølge, de indsættes.
Typer af kø i Python
Der er hovedsageligt to typer køer 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 ringe til kø () klasse fra kømodul.
- Sidste i kø først ud: Herovre vil det element, der indtastes sidst, være det første, der kommer ud.
For at arbejde med LIFO skal du ringe til LifoQueue () -klassen fra kømodulet .
Installation af Python-kø
Det er meget let at arbejde med kø i python. Her er trinene, der skal følges for at gøre brug af kø i din kode.
Trin 1) Du skal bare importere kømodulet som vist nedenfor:
import queue
Modulet er som standard tilgængeligt med python, og du har ikke brug for yderligere installation for at begynde at arbejde med køen. Der er 2 typer kø FIFO (først ind først ud) og LIFO (sidste ind først ud).
Trin 2) For at arbejde med FIFO-kø skal du ringe til kø-klassen ved hjælp af det kømodul, der er importeret som vist nedenfor:
import queueq1 = queue.Queue()
Trin 3) For at arbejde med LIFO-kø skal du ringe til LifoQueue () -klassen som vist nedenfor:
import queueq1 = queue.LifoQueue()
Metoder til rådighed inden for klasse Kø og LifoQueue
Følgende er de vigtige metoder til rådighed inden for klasse Queue og LifoQueue:
- put (item): Dette placerer elementet inde i køen.
- get (): Dette returnerer dig et element fra køen.
- tom (): Det returnerer sandt, hvis køen er tom og falsk, hvis der er varer til stede.
- qsize (): returnerer køens størrelse.
- fuld (): returnerer sandt, hvis køen er fuld, ellers falsk.
Først i første ude køeksempel
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 post 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 metoden put () 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 tilføje et vilkårligt antal poster til den. Hvis du vil definere størrelsen på køen, kan det samme gø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.
Produktion:
True
Nu er køens størrelse 5, og det tager ikke mere end 5 poster, og metoden q1.full () returnerer sand. Tilføjelse af flere poster udfører ikke koden længere.
Fjern et element fra køen
For at fjerne et element fra køen kan du bruge metoden kaldet get (). Denne metode tillader genstande fra køen, når de kaldes.
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)
Produktion:
The item removed from the queue is 10
Sidste i første udkø Eksempel
I tilfælde af sidst i den første ud-kø vil det element, der indtastes sidst, være det første, der kommer ud.
For at arbejde med LIFO, dvs. sidst i den første ud-kø, skal vi importere kømodulet og gøre brug af LifoQueue () -metoden.
Tilføj og post i en kø
Her vil vi forstå, hvordan man tilføjer et element til LIFO-køen.
import queueq1 = queue.LifoQueue()q1.put(10)
Du skal bruge put () -metoden på LifoQueue som vist i eksemplet ovenfor.
Fjern et element fra køen
For at fjerne et element fra LIFOqueue kan du benytte 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
Tilføj mere end 1 element i en kø
I ovenstående eksempler har vi set hvordan man tilføjer et enkelt element og fjerner elementet til FIFO og LIFOqueue. Nu vil vi se, hvordan du tilføjer mere end et element og også fjerner det.
Tilføj og post 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.
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
Tilføj og post 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.
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ølgende eksempel viser køsorteringen. Algoritmen, der bruges 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()
Produktion:
3 4 5 10 11 21
Omvendt kø
For at vende køen kan du bruge en anden kø og rekursion.
Følgende eksempel viser, hvordan køen vendes.
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()
Produktion:
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) er det element, der går først, 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 anvendes metoden get ().