logo

Heap-Warteschlange (oder Heapq) in Python

Python.

Einen einfachen Heap erstellen

Der häufen (iterierbar) :- Diese Funktion dient dazu Konvertieren Sie das Iterable in einen Heap Datenstruktur. d.h. in Heap-Reihenfolge.

Python3






# importing 'heapq' to implement heap queue> import> heapq> # initializing list> li>=> [>5>,>7>,>9>,>1>,>3>]> # using heapify to convert list into heap> heapq.heapify(li)> # printing created heap> print> (>'The created heap is : '>,(>list>(li)))>

CSS zentriert ein Bild
>

>

Ausgabe

The created heap is : [1, 3, 9, 7, 5]>

Effizientes Anhängen und Platzieren von Elementen

    heappush(heap, ele) : Diese Funktion wird verwendet, um das in seinen Argumenten erwähnte Element in einen Heap einzufügen. Der Die Reihenfolge wird angepasst, sodass die Heap-Struktur erhalten bleibt. heappop(heap) : Diese Funktion wird verwendet, um das kleinste Element aus dem Heap zu entfernen und zurückzugeben. Die Reihenfolge wird angepasst, sodass die Heap-Struktur erhalten bleibt.

Python3




Java kehrt einen String um
# importing 'heapq' to implement heap queue> import> heapq> # initializing list> li>=> [>5>,>7>,>9>,>1>,>3>]> # using heapify to convert list into heap> heapq.heapify(li)> # printing created heap> print>(>'The created heap is : '>, end>=>'')> print>(>list>(li))> # using heappush() to push elements into heap> # pushes 4> heapq.heappush(li,>4>)> # printing modified heap> print>(>'The modified heap after push is : '>, end>=>'')> print>(>list>(li))> # using heappop() to pop smallest element> print>(>'The popped and smallest element is : '>, end>=>'')> print>(heapq.heappop(li))>

>

>

Ausgabe

The created heap is : [1, 3, 9, 7, 5] The modified heap after push is : [1, 3, 4, 7, 5, 9] The popped and smallest element is : 1>

Anhängen und Knallen gleichzeitig

    heappushpop(heap, ele): – Diese Funktion kombiniert die Funktionsweise von Push- und Pop-Operationen in einer Anweisung und erhöht so die Effizienz. Die Heap-Reihenfolge bleibt nach diesem Vorgang erhalten. heapreplace(heap, ele) :- Diese Funktion fügt auch Elemente in einer Anweisung ein und entfernt sie, unterscheidet sich jedoch von der obigen Funktion. Dabei wird das Element zuerst gepoppt, dann wird das Element gepusht. d. h. der Wert, der größer als der gepushte Wert ist, kann zurückgegeben werden. Im Gegensatz zu heappushpop() gibt heapreplace() unabhängig vom gepushten Element den kleinsten ursprünglich im Heap befindlichen Wert zurück.

Python3




# importing 'heapq' to implement heap queue> import> heapq> # initializing list 1> li1>=> [>5>,>1>,>9>,>4>,>3>]> # initializing list 2> li2>=> [>5>,>7>,>9>,>4>,>3>]> # using heapify() to convert list into heap> heapq.heapify(li1)> heapq.heapify(li2)> # using heappushpop() to push and pop items simultaneously> # pops 2> print>(>'The popped item using heappushpop() is : '>, end>=>'')> print>(heapq.heappushpop(li1,>2>))> # using heapreplace() to push and pop items simultaneously> # pops 3> print>(>'The popped item using heapreplace() is : '>, end>=>'')> print>(heapq.heapreplace(li2,>2>))>

>

>

Reihenfolge nach zufälligem SQL
Ausgabe

The popped item using heappushpop() is : 1 The popped item using heapreplace() is : 3>

Finden Sie die größten und kleinsten Elemente von Heap in Python

    nlargest(k, iterable, key = fun): Diese Funktion wird verwendet, um die k größten Elemente aus der angegebenen Iterable zurückzugeben und den Schlüssel zu erfüllen, falls erwähnt. nsmallest(k, iterable, key = fun): Diese Funktion wird verwendet, um die k kleinsten Elemente aus der angegebenen Iterable zurückzugeben und den Schlüssel zu erfüllen, falls erwähnt.

Python3




# Python code to demonstrate working of> # nlargest() and nsmallest()> # importing 'heapq' to implement heap queue> import> heapq> # initializing list> li1>=> [>6>,>7>,>9>,>4>,>3>,>5>,>8>,>10>,>1>]> # using heapify() to convert list into heap> heapq.heapify(li1)> # using nlargest to print 3 largest numbers> # prints 10, 9 and 8> print>(>'The 3 largest numbers in list are : '>, end>=>'')> print>(heapq.nlargest(>3>, li1))> # using nsmallest to print 3 smallest numbers> # prints 1, 3 and 4> print>(>'The 3 smallest numbers in list are : '>, end>=>'')> print>(heapq.nsmallest(>3>, li1))>

>

>

Ausgabe

The 3 largest numbers in list are : [10, 9, 8] The 3 smallest numbers in list are : [1, 3, 4]>

Beispiel:

Python3




import> heapq> # Initialize a list with some values> values>=> [>5>,>1>,>3>,>7>,>4>,>2>]> # Convert the list into a heap> heapq.heapify(values)> # Print the heap> print>(>'Heap:'>, values)> # Add a new value to the heap> heapq.heappush(values,>6>)> # Print the updated heap> print>(>'Heap after push:'>, values)> # Remove and return the smallest element from the heap> smallest>=> heapq.heappop(values)> # Print the smallest element and the updated heap> print>(>'Smallest element:'>, smallest)> print>(>'Heap after pop:'>, values)> # Get the n smallest elements from the heap> n_smallest>=> heapq.nsmallest(>3>, values)> # Print the n smallest elements> print>(>'Smallest 3 elements:'>, n_smallest)> # Get the n largest elements from the heap> n_largest>=> heapq.nlargest(>2>, values)> # Print the n largest elements> print>(>'Largest 2 elements:'>, n_largest)>

>

>

Ausgabe

Java-Multithreading
Heap: [1, 4, 2, 7, 5, 3] Heap after push: [1, 4, 2, 7, 5, 3, 6] Smallest element: 1 Heap after pop: [2, 4, 3, 7, 5, 6] Smallest 3 elements: [2, 3, 4] Largest 2 elements: [7, 6]>

Dieses Programm erstellt mithilfe des Heapq-Moduls in Python eine Heap-Warteschlange und führt verschiedene Vorgänge aus, z. B. das Konvertieren einer Liste in einen Heap, das Hinzufügen eines neuen Werts zum Heap, das Entfernen des kleinsten Elements aus dem Heap und das Abrufen der n kleinsten und n größten Elemente aus dem Heap der Haufen.

Notiz dass das Heapq-Modul in Python Funktionen zum direkten Ausführen von Heap-Operationen für Listen bereitstellt, ohne eine separate Datenstruktur für den Heap zu erstellen. Das Heapq-Modul ist effizient und einfach zu verwenden, was es zu einer beliebten Wahl für die Implementierung von Prioritätswarteschlangen und anderen Datenstrukturen in Python macht.

Vorteile der Verwendung einer Heap-Warteschlange (oder Heapq) in Python:

    Effizient: Eine Heap-Warteschlange ist eine hocheffiziente Datenstruktur zur Verwaltung von Prioritätswarteschlangen und Heaps in Python. Es bietet logarithmische Zeitkomplexität für viele Operationen und ist daher eine beliebte Wahl für viele Anwendungen. Platzsparend: Heap-Warteschlangen sind platzsparend, da sie Elemente in einer Array-basierten Darstellung speichern und so den mit knotenbasierten Datenstrukturen wie verknüpften Listen verbundenen Overhead minimieren. Einfach zu verwenden: Heap-Warteschlangen in Python sind einfach zu verwenden, mit einer einfachen und intuitiven API, die es einfach macht, grundlegende Vorgänge wie das Einfügen, Löschen und Abrufen von Elementen aus dem Heap durchzuführen. Flexibel: Heap-Warteschlangen in Python können zur Implementierung verschiedener Datenstrukturen wie Prioritätswarteschlangen, Heaps und Binärbäume verwendet werden, was sie zu einem vielseitigen Werkzeug für viele Anwendungen macht.

Nachteile der Verwendung einer Heap-Warteschlange (oder Heapq) in Python:

    Eingeschränkte Funktionalität: Heap-Warteschlangen sind in erster Linie für die Verwaltung von Prioritätswarteschlangen und Heaps konzipiert und eignen sich möglicherweise nicht für komplexere Datenstrukturen und Algorithmen. Kein wahlfreier Zugriff: Heap-Warteschlangen unterstützen keinen wahlfreien Zugriff auf Elemente, was es schwierig macht, auf Elemente in der Mitte des Heaps zuzugreifen oder Elemente zu ändern, die sich nicht oben im Heap befinden. Keine Sortierung: Heap-Warteschlangen unterstützen keine Sortierung. Wenn Sie also Elemente in einer bestimmten Reihenfolge sortieren müssen, müssen Sie eine andere Datenstruktur oder einen anderen Algorithmus verwenden. Nicht Thread-sicher: Heap-Warteschlangen sind nicht Thread-sicher, was bedeutet, dass sie möglicherweise nicht für die Verwendung in Multithread-Anwendungen geeignet sind, bei denen die Datensynchronisierung von entscheidender Bedeutung ist.

Insgesamt stellen Heap-Warteschlangen eine hocheffiziente und flexible Datenstruktur für die Verwaltung von Prioritätswarteschlangen und Heaps in Python dar, verfügen jedoch möglicherweise über eingeschränkte Funktionalität und sind möglicherweise nicht für alle Anwendungen geeignet.