Comment concaténer deux ou plusieurs listes en Python

Aditya Raj 30 janvier 2023
  1. + pour concaténer deux listes en Python
  2. += pour concaténer deux listes en place dans Python
  3. La méthode itertools.chain concatène deux listes en Python
  4. La méthode extend() pour concaténer des listes en Python
  5. Méthode de décompression [*a, *b] dans la concaténation de listes Python
  6. Conclusion
Comment concaténer deux ou plusieurs listes en Python

Une liste en Python est une structure de données qui contient une collection ordonnée d’éléments.

Une opération pour coller deux listes ensemble est appelée concaténation. Vous pouvez concaténer deux listes en Python soit en place soit déplacé.

Supposons que nous ayons deux listes à concaténer,

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]

Nous pourrions avoir plusieurs méthodes pour les concaténer, mais elles diffèrent dans la performance lorsque la longueur augmente ou que le nombre de listes concaténées augmente.

Nous allons présenter ces différentes méthodes et vous donner la comparaison des performances.

+ pour concaténer deux listes en Python

L’opérateur + peut concaténer deux listes et renvoyer une nouvelle liste.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> result = list1 + list2
>>> result
[1, 2, 3, 4, 5, 6, 7, 8]

+= pour concaténer deux listes en place dans Python

+= est similaire à la méthode ci-dessus, mais il va changer les données de la première liste en place.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> list1 += list2
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]

La méthode itertools.chain concatène deux listes en Python

Chaîne du module itertools traite les séquences consécutives comme une seule séquence,

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> import itertools
>>> result = list(itertools.chain(list1, list2))
[1, 2, 3, 4, 5, 6, 7, 8]
Informations
itertools.chain a un constructeur alternatif - intertools.chain.from_iterable(). Il a un seul argument itérable dont les entrées sont évaluées paresseusement.

La méthode extend() pour concaténer des listes en Python

La méthode list extend étend la liste en ajoutant des éléments de l’itérable.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]

Elle modifie également les données de la liste existante en place plutôt que de retourner une nouvelle liste.

Méthode de décompression [*a, *b] dans la concaténation de listes Python

Des décompression supplémentaires comme * pour l’opérateur de décompression itérable et ** pour l’opérateur de décompression de dictionnaire sont étendues à partir de Python 3.5 comme expliqué dans PEP-0448.

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> result = [*list1, list2]
>>> result
[1, 2, 3, 4, 5, 6, 7, 8]

Cette méthode ne pourrait pas être applicable au cas de N listes, à moins que vous ne souhaitiez décompresser chaque liste manuellement.

Attention
Un déballage inaltérable ne peut pas être utilisé pour la compréhension, comme démontré ci-dessous.
>>> A = [1,2,3]
>>> B = [4,5,6]
>>> C = [7,8,9]
>>> [*t for t in [A,B,C]]
SyntaxError: iterable unpacking cannot be used in comprehension

Conclusion

Version En place ?
a + b - Non
list(intertools.chain(a,b)) >=2.3 Non
[*a, *b] >=3.5 Non
a += b - Oui
a.extend(b) - Oui

Nous utilisons le module perfplot pour comapare la performance des méthodes ci-dessus.

Comparaison des performances des méthodes de concaténation de listes Python

Comme le montre le graphique, les méthodes a.extend(b) et a+b sont presque les mêmes dans la performance et les meilleures parmi toutes les méthodes. La méthode list(chain(a,b)) a la plus mauvaise performance.

Auteur: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Article connexe - Python List