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

Comment fusionner deux tableaux triés en utilisant heapq en Python ?

Dans cette section, nous allons voir comment utiliser le module heapq de Python pour fusionner deux listes triées. Par exemple, si la liste1 = [10,20,30,40]并且list2 = [100,200,300,400,500],则合并后将返回list3 = [10,20,30,40,100, 200,300,400,500]

Pour exécuter cette tâche, nous utiliserons le module heapq. Ce module est fourni avec Python en tant que module bibliothèque standard. Par conséquent, nous devons l'importer avant de l'utiliser.

import heapq

Le module heapq a quelques attributs. Voici ceux-ci-

Méthode heapq.heapify(iterable)

Il est utilisé pour convertir un ensemble itérable en structure de données tas.

Méthode heapq.heappush(heap, élément)

Cette méthode est utilisée pour insérer un élément dans le tas. Après cela, le tas entier est restructuré.

Méthode heapq.heappop(heap)

Cette méthode est utilisée pour renvoyer et supprimer un élément du sommet du tas, et pour effectuer heapify sur les autres éléments.

Méthode heapq.heappushpop(heap, élément)

Cette méthode est utilisée pour insérer et éjecter des éléments en une seule instruction.

Méthode heapq.heapreplace(heap, élément)

Cette méthode est utilisée pour insérer et éjecter des éléments en une seule instruction. Elle supprime un élément de la racine du tas et l'insère dans le tas.

Méthode heapq.nlargest(n, itérable, clé=aucun)

Cette méthode est utilisée pour renvoyer n éléments les plus grands à partir du tas.

Méthode heapq.nsmallest(n, itérable, clé=aucun)

Cette méthode est utilisée pour renvoyer n éléments les plus petits à partir du tas.

Code d'exemple

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('Première liste triée : ',) + str(first_list))
print('Deuxième liste triée : ',) + str(second_list))
final_list = list(heapq.merge(first_list, second_list))
print('La liste finale : ',) + str(final_list))

Résultat de la sortie

Première liste triée : [12, 15, 20, 21, 36, 45, 63, 74, 95]
Deuxième liste triée : [13, 15, 42, 54, 69]
La liste finale : [12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]