Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python Queue: FIFO & LIFO verstehen mit praktischen Beispielen

Python Queue: FIFO & LIFO verstehen mit praktischen Beispielen

Was ist eine Queue in Python?

First-In, First-Out (FIFO) Prinzip. Die Queue macht zwei logische Enden verfügbar: front und rear – enqueue am rear, dequeue vom front.

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- und LifoQueue-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.

Python Queue: FIFO & LIFO verstehen mit praktischen Beispielen

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.

Python Queue: FIFO & LIFO verstehen mit praktischen Beispielen

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() – Gibt True zurück, wenn die Queue leer ist.
  • full() – Gibt True zurü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.Queue implementiert FIFO; queue.LifoQueue implementiert LIFO.
  • Verwenden Sie put() zum Enqueuen und get() zum Dequeuen.
  • Beide Klassen bieten empty(), full() und qsize() 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 deque aus collections oft mehr Flexibilität bietet.

Python

  1. Python-Operatoren meistern: Umfassender Leitfaden
  2. Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
  3. Pythons strip()-Methode meistern: Umfassender Leitfaden & Praxisbeispiele
  4. Python len(): Praktischer Leitfaden zur Messung von Objektlängen
  5. Pythons yield meistern: Generator vs. Return – Ein praktischer Leitfaden
  6. Python Counter in collections: Effizientes Zählen, Aktualisieren und arithmetische Operationen
  7. Pythons enumerate() meistern: Schleifen mit Indizes für Listen, Tupel, Strings und Dictionaries
  8. Python time.sleep(): Delays in Ihrem Code hinzufügen (Beispiel)
  9. Python list.index(): Element-Positionen finden mit praktischen Beispielen
  10. FIFO vs. LIFO: Wesentliche Unterschiede, Vor- & Nachteile und praktische Anwendungen