Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python-wachtrij:FIFO, LIFO-voorbeeld

Wat is Python Queue?

Een wachtrij is een container die gegevens bevat. De gegevens die het eerst worden ingevoerd, worden als eerste verwijderd en daarom wordt een wachtrij ook wel "First in First Out" (FIFO) genoemd. De wachtrij heeft twee uiteinden voor en achter. De items worden aan de achterkant ingevoerd en aan de voorkant verwijderd.

In deze Python-tutorial leer je:

  • Wat is Python Queue?
  • Hoe werkt Python Queue?
  • Soorten wachtrijen in Python
  • Installatie Python-wachtrij
  • Beschikbare methoden in de Queue- en LifoQueue-klasse
  • Voorbeeld van First In First Out-wachtrij
  • Laatst in, eerst uit wachtrij Voorbeeld
  • Voeg meer dan 1 item toe aan een wachtrij
  • Sorteerwachtrij
  • Wachtrij omkeren

Hoe werkt de Python-wachtrij?

De wachtrij kan gemakkelijk worden vergeleken met het voorbeeld uit de echte wereld:de rij mensen die in de rij staan ​​te wachten bij de kassa, de persoon die het eerst staat krijgt het kaartje als eerste, gevolgd door de volgende persoon, enzovoort. Dezelfde logica geldt ook voor de wachtrijgegevensstructuur.

Hier is een schematische weergave van de wachtrij:

De Achter vertegenwoordigt het punt waar de items in de wachtrij worden ingevoegd. In dit voorbeeld is 7 daarvoor de waarde.

De Voorkant staat voor het punt waar de items uit de wachtrij worden verwijderd. Als u een item uit de wachtrij verwijdert, is het eerste element dat u krijgt 1, zoals weergegeven in de afbeelding.

Item 1 was de eerste die in de wachtrij werd geplaatst en tijdens het verwijderen is het de eerste die eruit komt. Vandaar dat de wachtrij FIRST IN FIRST OUT (FIFO) wordt genoemd

In een wachtrij worden de items op volgorde verwijderd en kunnen ze niet tussendoor worden verwijderd. U kunt item 5 gewoon niet willekeurig uit de wachtrij verwijderen, daarvoor moet u alle items vóór 5 verwijderen. De items in de wachtrij worden verwijderd in de volgorde waarin ze zijn ingevoegd.

Soorten wachtrijen in Python

Er zijn hoofdzakelijk twee soorten wachtrijen in Python:

  • First in First out-wachtrij:hiervoor zal het element dat als eerste naar buiten gaat, als eerste naar buiten komen.

    Om met FIFO te werken, moet je Queue() . aanroepen klasse uit wachtrijmodule.

  • Laatste in First out-wachtrij:Hier komt het element dat als laatste wordt ingevoerd als eerste uit.

    Om met LIFO te werken, moet je LifoQueue() . aanroepen klasse uit de wachtrijmodule.

Installatie Python-wachtrij

Het is heel gemakkelijk om met wachtrij in python te werken. Hier zijn de stappen die u moet volgen om gebruik te maken van de wachtrij in uw code.

Stap 1) U hoeft alleen de wachtrijmodule te importeren, zoals hieronder weergegeven:

import queue

De module is standaard beschikbaar bij python en je hebt geen extra installatie nodig om met de wachtrij aan de slag te gaan. Er zijn 2 soorten wachtrij FIFO (first in first out) en LIFO (last in first out).

Stap 2) Om met FIFO queue te werken, roept u de Queue-klasse aan met behulp van de wachtrijmodule die is geïmporteerd zoals hieronder weergegeven:

import queue
q1 = queue.Queue()

Stap 3) Om met de LIFO-wachtrij te werken, roept u de klasse LifoQueue() aan zoals hieronder getoond:

import queue
q1 = queue.LifoQueue()

Beschikbare methoden in de wachtrij- en LifoQueue-klasse

Hieronder volgen de belangrijke methoden die beschikbaar zijn in de Queue- en LifoQueue-klasse:

  • put(item): Hierdoor wordt het item in de wachtrij geplaatst.
  • get(): Hiermee krijgt u een item uit de wachtrij terug.
  • leeg(): Het zal true retourneren als de wachtrij leeg is en false als er items aanwezig zijn.
  • qsize(): geeft de grootte van de wachtrij terug.
  • full(): geeft true terug als de wachtrij vol is, anders false.

Voorbeeld van First In First Out-wachtrij

In het geval van first-in-first-out, zal het element dat als eerste gaat, als eerste naar buiten komen.

Toevoegen en item in een wachtrij

Laten we aan een voorbeeld werken om een ​​item in een wachtrij toe te voegen. Om met de wachtrij aan de slag te gaan, importeert u eerst de modulewachtrij, zoals in het onderstaande voorbeeld.

Om een ​​item toe te voegen, kunt u gebruik maken van de put() methode zoals getoond in het voorbeeld:

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

Standaard is de grootte van de wachtrij oneindig en kunt u er een willekeurig aantal items aan toevoegen. Als u de grootte van de wachtrij wilt definiëren, kunt u hetzelfde als volgt doen

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.

Uitgang:

True

De grootte van de wachtrij is nu 5 en er zijn niet meer dan 5 items nodig, en de methode q1.full() retourneert true. Als u nog meer items toevoegt, wordt de code niet verder uitgevoerd.

Een item uit de wachtrij verwijderen

Om een ​​item uit de wachtrij te verwijderen, kunt u de methode get() gebruiken. Deze methode staat items uit de wachtrij toe wanneer ze worden aangeroepen.

Het volgende voorbeeld laat zien hoe u een item uit de wachtrij verwijdert.

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

item1 = q1.get()

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

Uitgang:

The item removed from the queue is  10

Laatst in, eerst uit wachtrij Voorbeeld

In het geval van de laatste in de first out-wachtrij, zal het element dat als laatste is ingevoerd de eerste zijn die eruit komt.

Om met LIFO te werken, d.w.z. als laatste in de eerste wachtrij, moeten we de wachtrijmodule importeren en gebruik maken van de LifoQueue()-methode.

Toevoegen en item in een wachtrij

Hier zullen we begrijpen hoe we een item aan de LIFO-wachtrij kunnen toevoegen.

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

U moet de methode put() gebruiken op LifoQueue, zoals weergegeven in het bovenstaande voorbeeld.

Een item uit de wachtrij verwijderen

Om een ​​item uit de LIFOqueue te verwijderen kun je de get() methode gebruiken.

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

item1 = q1.get()

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

Uitvoer:

The item removed from the LIFO queue is  10

Voeg meer dan 1 item toe aan een wachtrij

In de bovenstaande voorbeelden hebben we gezien hoe u een enkel item kunt toevoegen en het item kunt verwijderen voor FIFO en LIFOqueue. Nu zullen we zien hoe u meer dan één item kunt toevoegen en ook kunt verwijderen.

Toevoegen en item in een FIFO-wachtrij

import queue
q1 = queue.Queue()

for i in range(20):
    q1.put(i) # this will additem from 0 to 20 to the queue

Verwijder een item uit de FIFO-wachtrij

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.

Uitgang:

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

Toevoegen en item in een LIFOqueue

import queue
q1 = queue.LifoQueue()
for i in range(20):
    q1.put(i) # this will additem from 0 to 20 to the queue

Verwijder een item uit de LIFOqueue

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. 

Uitgang:

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 

Sorteerwachtrij

Het volgende voorbeeld toont de wachtrijsortering. Het algoritme dat voor het sorteren wordt gebruikt, is bellensortering.

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

Uitgang:

3 4 5 10 11 21

Wachtrij omkeren

Om de wachtrij om te keren, kunt u gebruik maken van een andere wachtrij en recursie.

Het volgende voorbeeld laat zien hoe de wachtrij omgekeerd kan worden.

Voorbeeld:

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

Uitgang:

10 3 21 4 5 11

Samenvatting:

  • Een wachtrij is een container die gegevens bevat. Er zijn twee soorten wachtrij, FIFO en LIFO.
  • Voor een FIFO (First in First out Queue), zal het element dat als eerste gaat, het eerste zijn dat eruit komt.
  • Voor een LIFO (Last in First out Queue), zal het element dat het laatst is ingevoerd het eerste zijn dat eruit komt.
  • Een item in een wachtrij wordt toegevoegd met de methode put(item).
  • Om een ​​item te verwijderen, wordt get() methode gebruikt.

Python

  1. Python-operators
  2. Python-lijst
  3. Python-woordenboek
  4. Python String strip() Functie met VOORBEELD
  5. Python-tekenreekslengte | len() methode Voorbeeld
  6. Opbrengst in Python-zelfstudie:voorbeeld van generator en rendement versus rendement
  7. Python-teller in verzamelingen met voorbeeld
  8. Enumerate() Functie in Python:Loop, Tuple, String (voorbeeld)
  9. Python time.sleep():voeg vertraging toe aan uw code (voorbeeld)
  10. Python Lijst index() met Voorbeeld
  11. FIFO versus LIFO:verschillen, voor- en nadelen, toepassingen en meer