Python offre plusieurs manières de combiner des listes, selon que vous souhaitiez conserver les entrées dupliquées et que l’ordre importe. Ce guide explore diverses techniques pour gérer efficacement les unions de listes.
Table des matières
Union avec éléments dupliqués
La manière la plus simple de combiner deux listes, en préservant tous les éléments et leurs répétitions, est d’utiliser l’opérateur +
:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = list1 + list2
print(union_list) # Sortie : [1, 2, 2, 3, 3, 4, 2]
Union triée
Pour une union triée, combinez l’opérateur +
avec la fonction sorted()
:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = sorted(list1 + list2)
print(union_list) # Sortie : [1, 2, 2, 2, 3, 3, 4]
Union sans éléments dupliqués
Pour créer une union sans doublons, utilisez des ensembles :
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_set = set(list1) | set(list2) # ou set(list1).union(list2)
union_list = list(union_set) # Conversion en liste si nécessaire
print(union_list) # Sortie : [1, 2, 3, 4] (l'ordre peut varier)
Les ensembles suppriment automatiquement les doublons. Notez que l’ordre des éléments dans la liste résultante peut différer de celui des listes originales.
Union de plusieurs listes
Pour plus de deux listes, l’approche par ensembles reste efficace :
list1 = [1, 2, 3]
list2 = [3, 4, 5]
list3 = [5, 6, 1]
union_set = set(list1) | set(list2) | set(list3)
union_list = list(union_set)
print(union_list) # Sortie : [1, 2, 3, 4, 5, 6] (l'ordre peut varier)
#Solution plus évolutive utilisant reduce:
from functools import reduce
union_list = list(reduce(lambda x,y: x | y, [set(l) for l in [list1, list2, list3]]))
print(union_list) # Sortie : [1, 2, 3, 4, 5, 6] (l'ordre peut varier)
La fonction reduce
fournit une solution plus concise et évolutive pour de nombreuses listes. N’oubliez pas que l’ordre des éléments peut ne pas être conservé ; utilisez sorted()
si l’ordre est important.