English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Wie füge ich zwei sortierte Arrays in Python mit heapq zusammen?

在本节中,我们将看到如何使用Python中的heapq模块合并两个排序的列表。例如,如果list1 = [10,20,30,40]并且list2 = [100,200,300,400,500],则合并后将返回list3 = [10,20,30,40,100, 200,300,400,500]

Um diese Aufgabe zu erledigen, werden wir den heapq-Modul verwenden. Dieser Modul ist als Standardmodul in Python enthalten. Daher müssen wir ihn vor seiner Verwendung importieren.

import heapq

Der heapq-Modul hat einige Eigenschaften. Diese sind wie folgt-

Methode heapq.heapify(iterierbar)

Dies wird verwendet, um eine Sammlung iterierbarer Daten in eine Heap-Datenstruktur zu konvertieren.

Methode heapq.heappush(heap, element)

Diese Methode dient dazu, Elemente in den Heap einzufügen. Anschließend wird der gesamte Heap neu aufgebaut.

Methode heapq.heappop(heap)

Diese Methode dient dazu, das Element vom oberen Ende des Heaps zurückzugeben und zu entfernen, und führt heapify auf die übrigen Elemente aus.

Methode heapq.heappushpop(heap, element)

Diese Methode dient dazu, Elemente in einem Ausdruck einzufügen und auszugeben.

Methode heapq.heapreplace(heap, element)

Diese Methode dient dazu, Elemente in einem Ausdruck einzufügen und auszugeben. Sie entfernt das Element vom Wurzelknoten des Heaps und fügt es in den Heap ein.

Methode heapq.nlargest(n, iterierbar, Schlüssel=kein)

Diese Methode dient dazu, n größte Elemente aus dem Heap zurückzugeben.

Methode heapq.nsmallest(n, iterierbar, Schlüssel=kein)

Diese Methode dient dazu, n kleinste Elemente aus dem Heap zurückzugeben.

Beispielcode

import heapq
first_list = [45, 12, 63, 95, 74, 21, 20, 15, 36]
second_list = [42, 13, 69, 54, 15]
first_list = sorted(first_list)
second_list = sorted(second_list)
print('Erste sortierte Liste: ' + str(first_list))
print('Zweite sortierte Liste: ' + str(second_list))
final_list = list(heapq.merge(first_list, second_list))
print('Die endgültige Liste: ' + str(final_list))

Ausgabefolge

Erste sortierte Liste: [12, 15, 20, 21, 36, 45, 63, 74, 95]
Zweite sortierte Liste: [13, 15, 42, 54, 69]
Die endgültige Liste: [12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]