Python Queue: FIFO & LIFO verstehen mit praktischen Beispielen
Python Queue: FIFO & LIFO verstehen mit praktischen Beispielen
Was ist eine Queue in Python?
In diesem Tutorial lernen Sie:
- Wie Pythons
queue-Modul funktioniert. - Arten von Queues in Python.
- Wie man das Modul installiert und importiert.
- Wichtige Methoden auf
Queue- undLifoQueue-Objekten. - Praxisbeispiele für FIFO- und LIFO-Queues.
- Batch-Operationen, Sortieren und Umkehren von Queues.
Wie funktioniert das Queue-Modul?
Das Verhalten ist analog zu einer physischen Warteschlange: Die erste Person in der Reihe wird zuerst bedient. In der Queue-Datenstruktur wird das Element, das zuerst enqueued wird, zuerst dequeued.

Der rear-Punkt ist der Ort, an dem neue Elemente eingefügt werden (z. B. Wert 7). Der front-Punkt ist der Ort, an dem Elemente die Queue verlassen; das Entfernen des ersten Elements liefert den Wert 1.
Da die Queue linear ist, können Sie kein beliebiges Element in der Mitte entfernen; Sie müssen zuerst alle vorherigen Elemente dequeuen.

Arten von Queues in Python
Pythons queue-Modul bietet zwei primäre Queue-Klassen:
- FIFO Queue – verwenden Sie
Queue(). Das älteste Element wird immer zuerst entfernt. - LIFO Queue – verwenden Sie
LifoQueue(). Das kürzlichste Element wird zuerst zurückgegeben.
Loslegen: Modul importieren
Python liefert das queue-Modul standardmäßig mit; keine externe Installation erforderlich.
import queue
FIFO-Queue instanziieren:
q1 = queue.Queue()
LIFO-Queue instanziieren:
q1 = queue.LifoQueue()
Wichtige Methoden
Sowohl Queue als auch LifoQueue bieten die gleiche Kern-API:
put(item)– Element enqueuen.get()– Nächstes Element dequeuen und zurückgeben.empty()– GibtTruezurück, wenn die Queue leer ist.full()– GibtTruezurück, wenn die Queue ihre Maximalgröße erreicht hat.qsize()– Gibt die aktuelle Anzahl der Elemente zurück.
FIFO Queue Beispiel
Einzelnes Element enqueuen
import queue q1 = queue.Queue() q1.put(10) # 10 zur Queue hinzufügen
Mehrere Elemente mit Größenlimit enqueuen
q1 = queue.Queue(maxsize=5) # Maximum 5 Elemente
for i in range(1, 6):
q1.put(i)
print(q1.full()) # → True
Ausgabe:
True
Element dequeuen
element = q1.get()
print('Dequeued Element:', element)
Ausgabe:
Dequeued Element: 10
LIFO Queue Beispiel
Einzelnes Element enqueuen
q1 = queue.LifoQueue() q1.put(10)
Element dequeuen
element = q1.get()
print('Dequeued von LIFO:', element)
Ausgabe:
Dequeued von LIFO: 10
Batch-Operationen
FIFO – 20 Zahlen enqueuen
q1 = queue.Queue()
for i in range(20):
q1.put(i)
FIFO – Alle dequeuen
while not q1.empty():
print('Wert:', q1.get())
Ausgabe:
Wert: 0 Wert: 1 ... Wert: 19
LIFO – 20 Zahlen enqueuen
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i)
LIFO – Alle dequeuen
while not q1.empty():
print('Wert:', q1.get())
Ausgabe:
Wert: 19 Wert: 18 ... Wert: 0
Queue sortieren (Bubble Sort)
q1 = queue.Queue()
for item in [11, 5, 4, 21, 3, 10]:
q1.put(item)
n = q1.qsize()
for i in range(n):
x = q1.get()
for j in range(n-1):
y = q1.get()
if x > y:
q1.put(y)
else:
q1.put(x)
x = y
q1.put(x)
while not q1.empty():
print(q1.queue[0], end=' ')
q1.get()
Ausgabe:
3 4 5 10 11 21
Queue mit Rekursion umkehren
def queue_umkehren(quelle, ziel):
element = quelle.get()
if not quelle.empty():
queue_umkehren(quelle, ziel)
ziel.put(element)
return ziel
q1 = queue.Queue()
for item in [11, 5, 4, 21, 3, 10]:
q1.put(item)
q2 = queue.Queue()
queue_umkehren(q1, q2)
while not q2.empty():
print(q2.queue[0], end=' ')
q2.get()
Ausgabe:
10 3 21 4 5 11
Kurze Zusammenfassung
- Pythons
queue.Queueimplementiert FIFO;queue.LifoQueueimplementiert LIFO. - Verwenden Sie
put()zum Enqueuen undget()zum Dequeuen. - Beide Klassen bieten
empty(),full()undqsize()zur Zustandsprüfung. - Sie können eine maximale Größe für eine FIFO-Queue festlegen;
put()darüber hinaus blockiert, bis Platz frei wird. - Sortieren und Umkehren sind mit Standardalgorithmen möglich, wobei
dequeauscollectionsoft mehr Flexibilität bietet.
Python
- Python-Operatoren meistern: Umfassender Leitfaden
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Pythons strip()-Methode meistern: Umfassender Leitfaden & Praxisbeispiele
- Python len(): Praktischer Leitfaden zur Messung von Objektlängen
- Pythons yield meistern: Generator vs. Return – Ein praktischer Leitfaden
- Python Counter in collections: Effizientes Zählen, Aktualisieren und arithmetische Operationen
- Pythons enumerate() meistern: Schleifen mit Indizes für Listen, Tupel, Strings und Dictionaries
- Python time.sleep(): Delays in Ihrem Code hinzufügen (Beispiel)
- Python list.index(): Element-Positionen finden mit praktischen Beispielen
- FIFO vs. LIFO: Wesentliche Unterschiede, Vor- & Nachteile und praktische Anwendungen