Javascript-Prioritätswarteschlange

| | | | | | | | | | | | | | | | | | | | | | | | | | | |

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.

Bevor wir das heapq-Modul verwenden können, mussen wir es zuerst mit der folgenden Importanweisung in unseren Code importieren:

Kehren wir zu unserem fruheren Beispiel zuruck. Angenommen, wir möchten eine Prioritätswarteschlange erstellen, um Informationen uber Ticketinhaber bei einem Konzert zu speichern Verwenden Sie also das Heapq-Modul und dieses Programm:

Unser Code gibt zuruck:

Zuerst haben wir die heapq-Bibliothek importiert und dann eine Python-Variable namens ticket_holders . initialisiert . Wir haben die Methode heappush() verwendet, um drei Tupel in unsere Priorit√§tswarteschlange zu verschieben. Diese Warteschlange speichert die Ticketnummern fur jeden Ticketinhaber und den Namen jedes Ticketinhabers.

Wir haben dann eine while-Schleife erstellt, die jedes Element in unserer Prioritätswarteschlange durchläuft. Diese Schleife entfernt das Element am Anfang der Warteschlange mit heappop(). Anschließend wird das entfernte Element an die Konsole gedruckt. Wie Sie sehen, werden alle Elemente in unserer Warteschlange in der Reihenfolge ihrer Priorität ausgedruckt.

Warum Sie keine Liste fuhren sollten

Technisch gesehen können Sie mit . eine Prioritätswarteschlange erstellen die Python-Listen-Datenstruktur. Dazu wurden Sie eine Liste erstellen und diese dann in aufsteigender Reihenfolge ordnen.

Dies ist jedoch eine relativ ineffiziente Art, eine Priorit√§tswarteschlange zu verwalten. Wenn Sie Elemente in der Liste √§ndern, mussen Sie die Liste neu anordnen, was Zeit in Anspruch nimmt.

Sie können eine herkömmliche Liste als Prioritätswarteschlange verwenden, wenn Sie nur einige Werte speichern mussen. Wenn Sie jedoch eine größere Warteschlange erstellen möchten, sind Listen keine gute Option.

Als Referenz sehen wir uns ein Beispiel fur eine Prioritätswarteschlange mit Listen an. Angenommen, wir möchten eine Prioritätswarteschlange erstellen, die die Reihenfolge der Ticketinhaber speichert, die zuerst in ein Konzert eingelassen werden sollen. Wir könnten Verwenden Sie den folgenden Code, um diese Warteschlange zu erstellen:

"Karrierekarma trat in mein Leben ein, als ich es am dringendsten brauchte, und half mir schnell, mit einem Bootcamp zusammenzuarbeiten. Zwei Monate nach meinem Abschluss habe ich meinen Traumjob gefunden, der meinen Werten und Lebenszielen entspricht!"

Venus, Software Engineer bei Rockbot

Unser Code gibt zuruck:

Wir haben eine Liste namens ticket_holders erstellt und dann drei Tupel zur Liste hinzugefugt. Jedes Tupel enthielt die Ticketnummer eines Ticketinhabers und ihren Namen. Dann haben wir die Python-Funktion sort() verwendet, um unsere Liste der Ticketinhaber in umgekehrter Reihenfolge zu sortieren.

Wir haben eine while-Schleife erstellt, die durch jedes Element in . iteriert die Liste ticket_holders und das Element ganz oben in der Liste. Dann druckt unser Code das entfernte Element an die Konsole.

Schlussfolgerung

Die beiden Am häufigsten können Sie eine Prioritätswarteschlange erstellen, indem Sie das heapq-Modul oder die Klasse queue.PriorityQueue verwenden. Obwohl Sie technisch gesehen eine Liste als Prioritätswarteschlange verwenden können, ist dies Ansatz lässt sich nicht gut skalieren.

In diesem Tutorial wurde anhand von Beispielen erläutert, wie eine Prioritätswarteschlange in Python erstellt wird. Jetzt sind Sie mit dem Wissen ausgestattet, das Sie benötigen, um Ihre eigenen Prioritätswarteschlangen wie ein Python-Profi zu erstellen!

Weitere Anleitungen zum Erlernen von Python finden Sie in unserem vollst√§ndigen Anleitung zum Erlernen von Python.