Python-Warteschlange: FIFO, LIFO-Beispiel

Inhaltsverzeichnis:

Anonim

Was ist Python Queue?

Eine Warteschlange ist ein Container, der Daten enthält. Die zuerst eingegebenen Daten werden zuerst entfernt, und daher wird eine Warteschlange auch als "First in First Out" (FIFO) bezeichnet. Die Warteschlange hat zwei Enden vorne und hinten. Die Gegenstände werden von hinten eingegeben und von der Vorderseite entfernt.

In diesem Python-Tutorial lernen Sie:

  • Was ist Python Queue?
  • Wie funktioniert die Python-Warteschlange?
  • Arten von Warteschlangen in Python
  • Installation der Python-Warteschlange
  • In der Queue- und LifoQueue-Klasse verfügbare Methoden
  • Beispiel für die First In First Out-Warteschlange
  • Last In First Out-Warteschlange Beispiel
  • Fügen Sie mehr als 1 Element in eine Warteschlange ein
  • Sortierwarteschlange
  • Warteschlange umkehren

Wie funktioniert die Python-Warteschlange?

Die Warteschlange kann leicht mit dem realen Beispiel verglichen werden, bei dem die Warteschlange in einer Warteschlange am Ticketschalter steht. Die Person, die zuerst steht, erhält zuerst das Ticket, gefolgt von der nächsten Person und so weiter. Die gleiche Logik gilt auch für die Warteschlangendatenstruktur.

Hier ist eine schematische Darstellung der Warteschlange:

Die Rückseite stellt den Punkt dar, an dem die Elemente in die Warteschlange eingefügt werden. In diesem Beispiel ist 7 der Wert dafür.

Die Vorderseite 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 (siehe Abbildung).

Punkt 1 war der erste, der in die Warteschlange eingefügt wurde, und beim Entfernen ist er der erste, der herauskam. Daher heißt die Warteschlange FIRST IN FIRST OUT (FIFO).

In einer Warteschlange werden die Elemente der Reihe nach entfernt und können nicht dazwischen entfernt werden. Sie können das Element 5 nicht zufällig aus der Warteschlange entfernen. Dazu müssen Sie alle Elemente vor 5 entfernen. Die Elemente in der Warteschlange werden in der Reihenfolge entfernt, in der sie eingefügt wurden.

Arten von Warteschlangen in Python

In Python gibt es hauptsächlich zwei Arten von Warteschlangen:

  • First-in-First-out-Warteschlange: Dafür ist das Element, das zuerst ausgeführt wird, das erste, das herauskommt.

    Um mit FIFO arbeiten zu können, müssen Sie die Queue () -Klasse aus dem Warteschlangenmodul aufrufen .

  • Last in First out Queue: Hier drüben ist das zuletzt eingegebene Element das erste, das herauskommt.

    Um mit LIFO arbeiten zu können, müssen Sie die LifoQueue () -Klasse aus dem Warteschlangenmodul aufrufen .

Installation der Python-Warteschlange

Es ist sehr einfach, mit Warteschlangen in Python zu arbeiten. Führen Sie die folgenden Schritte aus, um die Warteschlange in Ihrem Code zu verwenden.

Schritt 1) Sie müssen nur das Warteschlangenmodul wie unten gezeigt importieren:

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 Warteschlangenklasse mit dem wie unten gezeigt importierten Warteschlangenmodul auf:

import queueq1 = queue.Queue()

Schritt 3) Um mit der LIFO-Warteschlange zu arbeiten, rufen Sie die LifoQueue () -Klasse wie folgt auf:

import queueq1 = queue.LifoQueue()

In der Queue- und LifoQueue-Klasse verfügbare Methoden

Im Folgenden sind die wichtigen Methoden aufgeführt, die in der Queue- und LifoQueue-Klasse verfügbar sind:

  • put (item): Hiermit wird das Element in die Warteschlange gestellt.
  • get (): Hiermit erhalten Sie ein Element aus der Warteschlange.
  • empty (): Gibt true zurück, wenn die Warteschlange leer ist, und false, wenn Elemente vorhanden sind.
  • qsize (): Gibt die Größe der Warteschlange zurück.
  • full (): Gibt true zurück, wenn die Warteschlange voll ist, andernfalls false.

Beispiel für die First In First Out-Warteschlange

Im Fall von first in first out ist das Element, das zuerst geht, das erste, das herauskommt.

Hinzufügen und Element in einer Warteschlange

Lassen Sie uns an einem Beispiel arbeiten, um ein Element in eine Warteschlange aufzunehmen. Um mit der Warteschlange zu arbeiten, importieren Sie zuerst die Modulwarteschlange, wie im folgenden Beispiel gezeigt.

Um ein Element hinzuzufügen, können Sie die put () -Methode wie im Beispiel gezeigt verwenden:

import queueq1 = 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 eine beliebige Anzahl von Elementen hinzufügen. Wenn Sie die Größe der Warteschlange definieren möchten, können Sie dies wie folgt tun

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.

Ausgabe:

True

Jetzt ist die Größe der Warteschlange 5 und es werden nicht mehr als 5 Elemente benötigt, und die Methode q1.full () gibt true zurück. Durch Hinzufügen weiterer Elemente wird der Code nicht weiter ausgeführt.

Entfernen Sie ein Element aus der Warteschlange

Um ein Element aus der Warteschlange zu entfernen, können Sie die Methode get () verwenden. Diese Methode erlaubt Elemente aus der Warteschlange, wenn sie aufgerufen werden.

Das folgende Beispiel zeigt, wie Sie ein Element aus der Warteschlange entfernen.

import queueq1 = 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-Warteschlange Beispiel

Im Fall von last in der ersten Ausgangswarteschlange ist das zuletzt eingegebene Element das erste, das herauskommt.

Um mit LIFO zu arbeiten, dh zuletzt in der ersten Ausgangswarteschlange, müssen wir das Warteschlangenmodul importieren und die LifoQueue () -Methode verwenden.

Hinzufügen und Element in einer Warteschlange

Hier erfahren Sie, wie Sie der LIFO-Warteschlange ein Element hinzufügen.

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

Sie müssen die put () -Methode für LifoQueue verwenden, wie im obigen Beispiel gezeigt.

Entfernen Sie ein Element aus der Warteschlange

Um ein Element aus der LIFOqueue zu entfernen, können Sie die Methode get () verwenden.

import queueq1 = 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 in eine Warteschlange ein

In den obigen Beispielen haben wir gesehen, wie ein einzelnes Element hinzugefügt und das Element für FIFO und LIFOqueue entfernt wird. Jetzt werden wir sehen, wie Sie mehr als ein Element hinzufügen und auch entfernen können.

Hinzufügen und Element in einer FIFOqueue

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

Entfernen Sie ein Element aus der 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.

Ausgabe:

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

Hinzufügen und Element in einer LIFOqueue

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

Entfernen Sie einen Gegenstand aus der 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. 

Ausgabe:

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

Sortierwarteschlange

Das folgende Beispiel zeigt die Warteschlangensortierung. Der zum Sortieren verwendete Algorithmus ist die Blasensortierung.

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

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

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 einem FIFO (First in First out Queue) ist das Element, das zuerst ausgeführt wird, das erste, das herauskommt.
  • Bei einem LIFO (Last in First out Queue) ist das zuletzt eingegebene Element das erste, das herauskommt.
  • Ein Element in einer Warteschlange wird mithilfe der put (item) -Methode hinzugefügt.
  • Um ein Element zu entfernen, wird die Methode get () verwendet.