Python-Priorit√§tswarteschlange: Eine Anleitung
Eine Python-Prioritätswarteschlange speichert Daten in einer bestimmten Reihenfolge. Es gibt zwei Möglichkeiten, eine Prioritätswarteschlange in Python zu implementieren: Verwenden der Warteschlangenklasse und Verwenden des heapq-Moduls.
Sie möchten Daten möglicherweise basierend auf den Werten jedes Elements in der Liste sortieren. Sie möchten beispielsweise, dass der höchste Wert zuerst in der Liste und der niedrigste Wert zuletzt in der Liste erscheint.
Hier kommen Prioritätswarteschlangen ins Spiel. Eine Prioritätswarteschlange ist eine Datenstruktur das Daten basierend auf dem Wert seiner Schlussel in aufsteigender Reihenfolge speichert. Auf diese Weise können Sie problemlos auf den kleinsten und größten Wert in der Warteschlange zugreifen.
In diesem Tutorial wird erläutert, warum Sie keine Liste zum Erstellen von Prioritätswarteschlangen verwenden sollten. Wir zeigen Ihnen zwei effizientere Ansätze, mit denen Sie eine Python-Prioritätswarteschlange erstellen können.
Was ist eine Python-Priorit√§tswarteschlange?
Prioritätswarteschlangen sind eine modifizierte Version einer Warteschlange, in der Daten in der Reihenfolge, welches Element die höchste Priorität hat. Die Priorität jedes Elements in einer Prioritätswarteschlange wird abhängig vom Wert des Elements entschieden.
In der Informatik sind Warteschlangen Datenstrukturen, die Elemente in der First-In-First-Out-Reihenfolge (FIFO) speichern . Es gibt einige Szenarien, in denen die Verwendung dieser Struktur hilfreich sein kann.
Angenommen, Sie erstellen eine App zur Auftragsverfolgung fur ein Restaurant. Die Person, die zuerst eine Bestellung aufgibt, sollte vor den Personen bedient werden, die als n√§chstes ihre Bestellung aufgeben. Um den √úberblick uber Bestellungen zu behalten, sollten Sie eine Warteschlange verwenden.
Es gibt zwei Möglichkeiten, eine Prioritätswarteschlange in Python zu definieren:
81 % der Teilnehmer gaben an, dass sie sich sicherer fuhlen ihre Berufsaussichten im Tech-Bereich nach dem Besuch eines Bootcamps. Lassen Sie sich noch heute in ein Bootcamp einweisen.
Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate im Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.
Sie können eine Prioritätswarteschlange definieren uber eine Listenstruktur. Diese Strategie ist jedoch weniger effizient als die Verwendung der PriorityQueue-Warteschlangenklasse oder des Heapq-Moduls.
Priority Queue Python: queue.PriorityQueue
Die queue.PriorityQueue -Klasse erstellt eine Python-Prioritätswarteschlange. Diese Klasse ist Teil der Python-Warteschlangenbibliothek. Sie mussen die Warteschlangenbibliothek importieren, um diese Klasse zu verwenden. Um ein Element aus einer PriorityQueue abzurufen, können Sie die Methode get() verwenden.
Um auf die PriorityQueue-Klasse zuzugreifen, mussen wir sie in unseren Code importieren, was wir mit dieser Python-Import-Anweisung:
Angenommen, wir möchten eine Prioritätswarteschlange fur Ticketinhaber bei einem lokalen Konzert erstellen. Wir könnten dies mit diesem Code tun:
Unser Code gibt zuruck:
In unserem Code importieren wir zuerst die PriorityQueue-Klasse aus der Warteschlange-Bibliothek, dann initialisieren wir eine Priorit√§tswarteschlange namens ticket_holders. Als N√§chstes fugen wir drei Tupel in unsere Priorit√§tswarteschlange ein, die die mit einem Ticket verknupften Ticketnummern und Namen speichern.
Wir verwenden eine Python while-Schleife zum Durchlaufen jedes Elements in der Priorit√§tswarteschlange ticket_holders. Dann rufen wir dieses Element mit get() ab.
Die Methode queue.PriorityQueue ist effizient und einfach zu verwenden, was sie zu einer guten Wahl macht wenn Sie eine Priorit√§tswarteschlange erstellen mussen.
Python-Heapq-Modul mit Priorit√§tswarteschlange
Mit dem Heapq-Modul können Sie eine Python-Prioritätswarteschlange definieren. Eine heapq-Datenstruktur entfernt Elemente in der Reihenfolge ihrer Priorität. Der niedrigste Wert hat die niedrigste Priorität und der höchste Wert die höchste Priorität in der heapq-Struktur.