Python-Warteschlange:FIFO-, LIFO-Beispiel
Was ist die Python-Warteschlange?
Eine Warteschlange ist ein Container, der Daten enthält. Die zuerst eingegebenen Daten werden zuerst entfernt, daher wird eine Warteschlange auch „First in First Out“ (FIFO) genannt. Die Warteschlange hat zwei Enden vorne und hinten. Die Artikel werden von der Rückseite eingegeben und von der Vorderseite entnommen.
In diesem Python-Tutorial lernen Sie:
- Was ist die Python-Warteschlange?
- Wie funktioniert die Python-Warteschlange?
- Warteschlangentypen in Python
- Installation der Python-Warteschlange
- Innerhalb der Queue- und LifoQueue-Klasse verfügbare Methoden
- Beispiel für First In First Out-Warteschlange
- Beispiel für die Last-In-First-Out-Warteschlange
- Fügen Sie mehr als 1 Element zu einer Warteschlange hinzu
- Sortierwarteschlange
- Warteschlange umkehren
Wie funktioniert die Python-Warteschlange?
Die Warteschlange kann leicht mit dem realen Beispiel verglichen werden, die Schlange von Menschen, die in einer Warteschlange am Ticketschalter warten, die Person, die zuerst steht, bekommt zuerst das Ticket, gefolgt von der nächsten Person und so weiter. Die gleiche Logik gilt auch für die Datenstruktur der Warteschlange.
Hier ist eine schematische Darstellung der Warteschlange:
Die Hinterseite stellt den Punkt dar, an dem die Elemente in die Warteschlange eingefügt werden. In diesem Beispiel ist 7 der Wert dafür.
Die Front stellt den Punkt dar, an dem die Elemente aus der Warteschlange entfernt werden. Wenn Sie ein Element aus der Warteschlange entfernen, erhalten Sie als erstes Element 1, wie in der Abbildung gezeigt.
Element 1 war das erste, das in die Warteschlange eingefügt wurde, und beim Entfernen ist es das erste, das herauskommt. Daher heißt die Warteschlange FIRST IN FIRST OUT (FIFO)
In einer Warteschlange werden die Elemente der Reihe nach entnommen und können nicht zwischendurch entnommen werden. Sie können den Artikel 5 einfach nicht zufällig aus der Warteschlange entfernen, dazu müssen Sie alle Artikel vor 5 entfernen. Die Artikel in der Warteschlange werden in der Reihenfolge entfernt, in der sie eingefügt wurden.
Arten von Warteschlangen in Python
Es gibt hauptsächlich zwei Arten von Warteschlangen in Python:
- First-in-First-out-Warteschlange:Hier kommt das Element, das zuerst kommt, als erstes heraus.
Um mit FIFO zu arbeiten, müssen Sie Queue() aufrufen Klasse aus dem Warteschlangenmodul.
- Last in First out Queue:Hier drüben kommt das zuletzt eingegebene Element als erstes heraus.
Um mit LIFO zu arbeiten, müssen Sie LifoQueue() aufrufen Klasse aus dem Warteschlangenmodul.
Installation der Python-Warteschlange
Es ist sehr einfach, mit Warteschlangen in Python zu arbeiten. Hier sind die Schritte, die Sie befolgen müssen, um die Warteschlange in Ihrem Code zu verwenden.
Schritt 1) Sie müssen nur das Warteschlangenmodul importieren, wie unten gezeigt:
import queue
Das Modul ist standardmäßig mit Python verfügbar, und Sie benötigen keine zusätzliche Installation, um mit der Warteschlange zu arbeiten. Es gibt zwei Arten von Warteschlangen-FIFO (first in first out) und LIFO (last in first out).
Schritt 2) Um mit der FIFO-Warteschlange zu arbeiten, rufen Sie die Queue-Klasse auf, indem Sie das wie unten gezeigt importierte Warteschlangenmodul verwenden:
import queue q1 = queue.Queue()
Schritt 3) Um mit der LIFO-Warteschlange zu arbeiten, rufen Sie die Klasse LifoQueue() wie unten gezeigt auf:
import queue q1 = queue.LifoQueue()
Innerhalb der Queue- und LifoQueue-Klasse verfügbare Methoden
Im Folgenden sind die wichtigen Methoden aufgeführt, die innerhalb der Queue- und LifoQueue-Klasse verfügbar sind:
- put(item): Dadurch wird das Element in die Warteschlange gestellt.
- get(): Dadurch erhalten Sie ein Element aus der Warteschlange zurück.
- leer(): Es wird wahr zurückgegeben, wenn die Warteschlange leer ist, und falsch, wenn Elemente vorhanden sind.
- qsize(): gibt die Größe der Warteschlange zurück.
- voll(): gibt true zurück, wenn die Warteschlange voll ist, andernfalls false.
Beispiel einer First-In-First-Out-Warteschlange
Im Fall von First in first out wird das Element, das zuerst kommt, als erstes herauskommen.
Hinzufügen und Element in einer Warteschlange
Lassen Sie uns an einem Beispiel arbeiten, um ein Element in eine Warteschlange einzufügen. Um mit der Arbeit mit der Warteschlange zu beginnen, importieren Sie zuerst die Modulwarteschlange, wie im folgenden Beispiel gezeigt.
Um ein Element hinzuzufügen, können Sie die Methode put() verwenden, wie im Beispiel gezeigt:
import queue q1 = queue.Queue() q1.put(10) #this will additem 10 to the queue.
Standardmäßig ist die Größe der Warteschlange unendlich und Sie können ihr beliebig viele Elemente hinzufügen. Falls Sie die Größe der Warteschlange definieren möchten, können Sie dasselbe wie folgt tun
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.
Ausgabe:
True
Jetzt ist die Größe der Warteschlange 5, und sie nimmt nicht mehr als 5 Elemente auf, und die Methode q1.full() gibt wahr zurück. Durch das Hinzufügen weiterer Elemente wird der Code nicht weiter ausgeführt.
Element aus der Warteschlange entfernen
Um ein Element aus der Warteschlange zu entfernen, können Sie die Methode get() verwenden. Diese Methode lässt Elemente aus der Warteschlange zu, wenn sie aufgerufen wird.
Das folgende Beispiel zeigt, wie ein Element aus der Warteschlange entfernt wird.
import queue q1 = queue.Queue() q1.put(10) item1 = q1.get() print('The item removed from the queue is ', item1)
Ausgabe:
The item removed from the queue is 10
Last-In-First-Out-Warteschlangenbeispiel
Im Fall von last in the first out queue kommt das zuletzt eingegebene Element als erstes heraus.
Um mit LIFO zu arbeiten, d. h. als Letzter in der First-Out-Warteschlange, müssen wir das Warteschlangenmodul importieren und die Methode LifoQueue() verwenden.
Hinzufügen und Element in einer Warteschlange
Hier werden wir verstehen, wie man ein Element zur LIFO-Warteschlange hinzufügt.
import queue q1 = queue.LifoQueue() q1.put(10)
Sie müssen die put()-Methode auf LifoQueue verwenden, wie im obigen Beispiel gezeigt.
Element aus der Warteschlange entfernen
Um ein Element aus der LIFOqueue zu entfernen, können Sie die Methode get() verwenden .
import queue q1 = queue.LifoQueue() q1.put(10) item1 = q1.get() print('The item removed from the LIFO queue is ', item1)
Ausgabe:
The item removed from the LIFO queue is 10
Fügen Sie mehr als 1 Element zu einer Warteschlange hinzu
In den obigen Beispielen haben wir gesehen, wie man ein einzelnes Element hinzufügt und das Element für FIFO und LIFOqueue entfernt. Jetzt werden wir sehen, wie man mehr als ein Element hinzufügt und auch entfernt.
Hinzufügen und Artikel in einer FIFO-Warteschlange
import queue q1 = queue.Queue() for i in range(20): q1.put(i) # this will additem from 0 to 20 to the queue
Ein Element aus der FIFO-Warteschlange entfernen
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.
Ausgabe:
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
Hinzufügen und Element in einer LIFO-Warteschlange
import queue q1 = queue.LifoQueue() for i in range(20): q1.put(i) # this will additem from 0 to 20 to the queue
Entfernen Sie ein Element aus der LIFO-Warteschlange
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.
Ausgabe:
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
Sortierwarteschlange
Das folgende Beispiel zeigt die Warteschlangensortierung. Der für die Sortierung verwendete Algorithmus ist Bubble Sort.
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()
Ausgabe:
3 4 5 10 11 21
Warteschlange umkehren
Um die Warteschlange umzukehren, können Sie eine andere Warteschlange und Rekursion verwenden.
Das folgende Beispiel zeigt, wie die Warteschlange umgekehrt wird.
Beispiel:
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()
Ausgabe:
10 3 21 4 5 11
Zusammenfassung:
- Eine Warteschlange ist ein Container, der Daten enthält. Es gibt zwei Arten von Warteschlangen, FIFO und LIFO.
- Bei einer FIFO-Warteschlange (First in First out Queue) kommt das Element, das zuerst kommt, als erstes heraus.
- Bei einer LIFO (Last in First out Queue) kommt das zuletzt eingegebene Element als erstes heraus.
- Ein Element in einer Warteschlange wird mit der put(item)-Methode hinzugefügt.
- Um ein Element zu entfernen, wird die Methode get() verwendet.
Python
- Python-Operatoren
- Python-Wörterbuch
- Python String strip() Funktion mit BEISPIEL
- Länge der Python-Zeichenfolge | len() Methode Beispiel
- Yield in Python Tutorial:Generator &Yield vs. Return Beispiel
- Python-Zähler in Sammlungen mit Beispiel
- Enumerate() Funktion in Python:Loop, Tuple, String (Beispiel)
- Python time.sleep():Verzögerung zu Ihrem Code hinzufügen (Beispiel)
- Python List index() mit Beispiel
- FIFO vs. LIFO:Unterschiede, Vor- und Nachteile, Anwendungen und mehr