Tuto Python : Concaténer ou fusionner des listes

Tables des matières

Introduction

  1. Qu'est-ce que la concaténation ?
  2. Concaténation des listes avec l'opérateur +
  3. Concaténation des listes avec append ()
  4. Concaténation des listes avec extend ()
  5. Concaténation des listes avec l'opérateur Asterisk *
  6. Concaténation des listes avec itertools.chain ()
  7. Concaténation des listes avec compréhension de liste
  8. Concaténer les listes avec la méthode zip
  9. Fusionner deux listes Python et supprimer les doublons
  10. Fusionner une liste de Pandas DataFrames
  11. Exercices

11.1.    Exercice 1

11.2.    Exercice 2

11.3.    Exercice 3

  1. Solution des exercices

12.1.    Exercice 1

12.2.    Exercice 2

12.3.    Exercice 3

Conclusion

Introduction

Dans ce tutoriel, nous allons présenter les différentes techniques pour concaténer plusieurs listes en Python. Les listes Python nous fournissent un moyen de stocker des données et d'y effectuer des manipulations. Alors qu'est-ce que la concaténation ? et quelles sont les différentes méthodes pour joindre deux listes en python ?

1. Qu'est-ce que la concaténation ?

La concaténation de listes est une opération où les éléments d'une liste sont ajoutés à la fin d'une autre liste. Par exemple, si nous avons une liste avec des éléments [1, 2, 3] et une autre liste avec des éléments [4, 5, 6]. Si nous concaténons les deux listes, alors, le résultat peut être [1, 2, 3, 4, 5, 6] ou [4, 5, 6, 1, 2, 3] en fonction de l'ordre dans lequel nous concaténons.

Il existe différentes manières de concaténer des listes en Python. Nous allons examiner les méthodes suivantes une par une :

  • Opérateur de concaténation (+)
  • L’opérateur *
  • Compréhensions de la liste
  • extend () Méthode intégrée
  • itertools.chain ()
  • La méthode Append ()
  • La méthode Zip
  • La méthode Itertool.chain
  • La méthode Pandas concat

2. Concaténation des listes avec l'opérateur +

La méthode la plus conventionnelle pour effectuer la concaténation de liste, l'utilisation de l'opérateur « + » permet d'ajouter facilement l'ensemble d'une liste derrière l'autre liste et donc d'effectuer la concaténation.

Si vous utilisez l'opérateur + sur deux entiers, vous obtiendrez la somme de ces entiers. Mais si vous utilisez l'opérateur + sur deux listes, vous obtiendrez une nouvelle liste qui est la concaténation de ces dernières.

Exemple :

Par exemple, nous avons 3 listes qui contiennent des nombres et nous voulons les fusionner :

Syntaxe :

x = [10, 20,30,40]
y = [12, 14, 16, 18]
z = [55, 44, 66, 99]
opération = x + y + z
print ("Liste concaténée:\n", str (opération))

Résultat d’exécution :

Nous pouvons concaténer n'importe quel nombre de listes, si nous utilisons l'opérateur de concaténation +, mais le problème avec l'opérateur + pour la concaténation de liste est qu'il crée une nouvelle liste pour chaque opération de concaténation de liste. Cela peut être très inefficace si vous utilisez l'opérateur + plusieurs fois dans une boucle.

3. Concaténation des listes avec append ()

La méthode list.append (x) - comme son nom l'indique - ajoute l'élément x à la fin de la liste mais dans ce didacticiel, nous allons l'utiliser pour fusionner deux listes en ajoutant une liste à une autre.

Exemple :

Voici un exemple similaire qui montre comment utiliser la méthode append () pour concaténer deux listes 1 et 2 et stocker le résultat dans la liste 1.

Syntaxe :

liste1 = ['A','B','C']
liste2 = ['D','E','F']
for element in liste2:
liste1.append(element)
print("Liste concaténée:\n",liste1)

Résultat d’exécution :

Il semble un peu étrange de concaténer deux listes en itérant sur chaque élément dans une liste. Mais ne vous inquiétez pas, vous allez découvrir d'autres moyens alternatifs dans les sections suivantes, vous pourrez alors choisir le plus adapté à votre projet.

4. Concaténation des listes avec extend ()

Vous avez étudié la méthode append () dans le section précédente. Un problème majeur avec cette méthode est que si vous voulez concaténer deux listes, vous devez itérer sur tous les éléments des listes et les ajouter un par un.

Exemple :

Nous allons utiliser les mêmes données de l'exemple précédent et appliquer la méthode extend.

Syntaxe :

liste1 = ['A','B','C']
liste2 = ['D','E','F']
liste1.extend(liste2)
print("Liste concaténée:\n",liste1)

Résultat d’exécution :

Le code montre que la méthode extend () est plus lisible et concise que la méthode append (). Et c'est aussi plus rapide en termes de temps d’exécution si vous traitez un grand ensemble de données.

5. Concaténation des listes avec l'opérateur Asterisk * 

Il existe de nombreuses applications de l'opérateur astérisque. Mais une astuce intéressante consiste à l'utiliser comme opérateur de décompression qui « décompresse » le contenu d'une structure de données de conteneur telle qu'une liste ou un dictionnaire dans une autre.

Exemple :

Voici un exemple qui montre comment utiliser l’opérateur astérisque pour concaténer deux listes liste1 et liste2.

Syntaxe :

liste1 = [1, 2, 3]
liste2 = [4, 5, 6]
liste3= [7, 8, 9]
résultat = [*liste1, *liste2, *liste3]
print(résultat)

Résultat d’exécution

L’opérateur astérisque est également court, concis, lisible et rapide !

6. Concaténation des listes avec itertools.chain ()

La fonction itertools.chain () des modules itertools de Python peut également être utilisée pour fusionner des listes en Python. La fonction itertools.chain () accepte différents itérables tels que des listes, des chaînes, des tuples … comme paramètres et en résulte une séquence en sortie.

Exemple :

Passez plus de deux listes à la méthode itertools.chain () pour concaténer toutes les listes.

Syntaxe :

import itertools
liste1 = [10, 11, 12, 13, 14]
liste2 = [20, 30, 42]
liste3=['A','B','C']
résultat = list(itertools.chain(liste1, liste2,liste3))
print ("Liste concaténée:\n" ,str(résultat))

Résultat d’exécution :

Comme vous pouvez l’identifier, le type de données des éléments n'affecte pas le fonctionnement de la méthode chain (). Mais la lisibilité est moins importante en comparant avec l’utilisation de extend (), append () ou même l'opérateur astérisque. Ainsi, cette méthode est jugée comme longue en termes de temps d’exécution.

7. Concaténation des listes avec compréhension de liste

Python List Comprehension est une méthode pratique pour concaténer deux listes en Python. La compréhension d'une liste est simplement le processus de construction / obtention d'une liste basée sur une liste existante. Ainsi, la formule la plus simple est [expression + contexte]. Avec :

  • Expression : désigne que faire de chaque élément de la liste.
  • Contexte : désigne les éléments de la liste à sélectionner. Il se compose d'un nombre arbitraire d'instructions for et if.

Exemple :

Voyons comment concaténer 3 listes en utilisant les compréhensions de liste.

Syntaxe :

liste1 = [1, 2, 3]
liste2 = [4, 5, 6]
liste3 = [7, 8, 9]
résultat = [element for liste in [liste1, liste2, liste3] for element in liste]
print(résultat)

Résultat d’exécution :

8. Concaténer les listes avec la méthode zip

La fonction zip peut prendre les deux listes comme paramètres et les concaténer. Nous concevons une boucle for pour capturer ces combinaisons et les mettre dans une nouvelle liste. 

Exemple :

Par exemple, nous avons deux listes avec le premier mot de chaque liste composé d’un nom à plusieurs termes et nous désirons alors fusionner l’ensemble pour avoir une liste des mots composés.

Syntaxe :

listeA = ["Ronds-", "Coffres-", "Porte-"]
listeB = ['points', 'forts', 'bonheur']
print ("Liste A :", listeA)
print ("Liste B :", listeB)
# Utilisez le zip
résultat = [i + j for i, j in zip (listeA, listeB)]
# Résultat
print ("Les listes concaténées:", résultat)

Résultat d’exécution

9. Fusionner deux listes Python et supprimer les doublons

Utilisez les trois étapes suivantes pour combiner deux listes et supprimer les doublons au niveau de la deuxième liste :

  • Convertissez la première et deuxième liste en un ensemble à l'aide du constructeur set (...).
  • Utilisez l'opération set minus pour obtenir tous les éléments qui sont dans la deuxième liste mais absents dans la première liste.
  • Créez une nouvelle liste en concaténant ces éléments avec la première liste.

Exemple :

Considérons les deux listes suivantes : [1, 2, 2, 4] et [2, 6, 6, 4, 6,7,7]. Nous voulons fusionner ces listes avec la nouvelle liste [1, 2, 2, 4, 5, 6] en supprimant les doublons dans la deuxième liste .

Syntaxe :

liste1 = [1, 2, 2, 4]
liste2 = [2, 6, 6, 4, 6,7,7]
# Trouver les éléments qui sont en deuxième mais pas en premier
nouveau = set (liste2) - set (liste1)
# Créer la nouvelle liste en utilisant la concaténation de liste
liste3 = liste1 + list(nouveau)
print(liste3)

Résultat d’exécution

10. Fusionner une liste de Pandas DataFrames

Pandas est un package Python populaire dans la science des données, et pour une bonne raison : il offre des structures de données puissantes, expressives et flexibles qui facilitent la manipulation et l'analyse des données. Le DataFrame est l'une de ces structures.

Les DataFrames en Python sont définis comme des structures de données étiquetées bidimensionnelles avec des colonnes de types potentiellement différents.

En général, vous pourriez dire que le Pandas DataFrame se compose de trois composants principaux : les données, l'index et les colonnes.

Fusion avec Pandas Concat :

L’utilisation de cette méthode est le moyen le plus simple de concaténer plusieurs listes de DataFrames.

Exemple :

Imaginez que nous ayons 3 dataframes, chaque data frame contient l'âge et le salaire d'un employé et d'un manager, nous allons les mettre tous dans une liste que nous appellerons "dataframes" puis les fusionner.

Syntaxe :

import pandas as pd
dataframe1 = pd.DataFrame({'Ali': [32, 'manager', 24000], 'John': [22, 'employé', 11000]})
dataframe2 = pd.DataFrame({'Ali': [39, 'manager', 25000], 'John': [27, 'employé', 12000]})
dataframe3 = pd.DataFrame({'Ali': [40, 'manager', 26000], 'John': [28, 'employé', 13000]})
# liste des dataframes
dfs = [dataframe1, dataframe2, datframe3]
df = pd.concat(dfs)
print(dfs)

Résultat d’exécution

11. Exercices

11.1.          Exercice 1

Considérez les 3 listes suivantes :

  • liste1 = ["un", "exercice", "simple",]
  • liste2 = [10, 2, 45, 3, 5, 7, 8, 10]
  • liste3 = [11, 12, 13]

Fusionnez les 3 listes en utilisant les méthodes suivantes :

  • La méthode d'Opérateur +
  • La méthode d'opérateur *
  • Méthode d’itertools. chain
  • Méthode de liste compréhension

11.2.          Exercice 2 

Considérez les 2 listes suivantes :

  • liste1 = [10, 20, 5, 6, 14]
  • liste2 = [20, 30, 42,35,44]

Fusionnez les deux listes en utilisant les deux méthodes : . Extend et Append

11.3.          Exercice 3 

Considérez les 2 listes suivantes :

  • liste1 = [A, B, C, D,]
  • liste2 = [E, E, E, F, G, G, G]

Fusionnez les deux listes et de supprimez les doublons en même temps.

12. Solution des exercices

12.1.          Exercice 1 

Syntaxe :

liste1 = ["un", "exercice", "simple",]
liste2 = [10, 2, 45, 3, 5, 7, 8, 10]
liste3 = [11, 12, 13]
#La méthode d'Opérateur +
liste = liste1 + liste2 +liste3
#La méthode d'opérateur *
résultat1 = [*liste1, *liste2, *liste3]
#Fusionner avec itertools.chain
résultat2 = list(itertools.chain(liste1, liste2,liste3))
#Concaténation avec compréhension
résultat3 = [element for liste in [liste1, liste2, liste3] for element in liste]
print("Liste concaténée:\n" )
print(liste)
print (str(résultat1))
print (résultat2)
print(résultat3)

Résultat d’exécution :

12.2.          Exercice 2 

En utilisant la méthode extend()

Syntaxe :

liste1 = [10, 20, 5, 6, 14]
liste2 = [20, 30, 42,35,44]
liste1.extend(liste2)
print("Liste concaténée:\n",liste1)

Syntaxe :

liste1 = [10, 20, 5, 6, 14]
liste2 = [20, 30, 42,35,44]
for element in liste2:
liste1.append(element)
print("Liste concaténée:\n",liste1)

Résultat d’exécution :

12.3.          Exercice 3

Syntaxe :

liste1 = ['A', 'B', 'C', 'D',]
liste2 = ['E', 'E', 'E', 'F', 'G','G','G']
nouveau = set (liste2) - set (liste1)
liste3 = liste1 + list(nouveau)
print(liste3)

Résultat d’exécution

Conclusion

Les meilleurs moyens de concaténer des listes sont les opérateurs + et *. Vous pouvez utiliser l'une des méthodes ci-dessus pour concaténer des listes. En pratique, vous saurez quand et quelle méthode utiliser en fonction du besoin du programme.

Le résultat de la concaténation sera donc basé sur l'ordre dans lequel vous placez les listes à concaténer.

Article publié le 17 Décembre 2020par Mouhtat Bilal