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

Come unire due array ordinati in Python utilizzando heapq?

In questa sezione, vedremo come utilizzare il modulo heapq di Python per unire due elenchi ordinati. Ad esempio, se list1 = [10, 20, 30, 40] e list2 = [100, 200, 300, 400, 500], dopo l'unione, restituirà list3 = [10, 20, 30, 40, 100, 200, 300, 400, 500]

Per eseguire questa operazione, utilizzeremo il modulo heapq. Il modulo è allegato a Python come modulo della libreria standard. Pertanto, dobbiamo importarlo prima di utilizzarlo.

import heapq

Il modulo heapq ha alcune proprietà. Queste sono elencate di seguito-

metodo heapq.heapify(iterable)

Viene utilizzato per convertire un insieme iterabile in una struttura dati heap.

metodo heapq.heappush(heap,element)

Questo metodo viene utilizzato per inserire elementi nel cespuglio. Dopo di che, riorganizza l'intera struttura del cespuglio.

Metodo heapq.heappop(heap)

Questo metodo viene utilizzato per restituire e eliminare l'elemento in cima al cespuglio, eseguendo heapify sugli altri elementi.

Metodo heapq.heappushpop(heap, element)

Questo metodo viene utilizzato per inserire e popolare elementi in una singola espressione.

Metodo heapq.heapreplace(heap, element)

Questo metodo viene utilizzato per inserire e popolare elementi in una singola espressione. Elimina l'elemento dalla radice del cespuglio e lo inserisce nel cespuglio.

Metodo heapq.nlargest(n, iterable, key=None)

Questo metodo viene utilizzato per restituire n elementi più grandi dal cespuglio.

Metodo heapq.nsmallest(n, iterable, key=None)

Questo metodo viene utilizzato per restituire n elementi più piccoli dal cespuglio.

Esempio di codice

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('Prima lista ordinata: ' + str(first_list))
print('Seconda lista ordinata: ' + str(second_list))
final_list = list(heapq.merge(first_list, second_list))
print('Elenco finale: ' + str(final_list))

Risultato di output

Prima lista ordinata: [12, 15, 20, 21, 36, 45, 63, 74, 95]
Seconda lista ordinata: [13, 15, 42, 54, 69]
Elenco finale: [12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]