Comment concaténer deux ou plusieurs listes en Python

  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

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.

Article connexe - Python List

  • Quelle est la différence entre les méthodes de liste append et extend
  • Comment convertir une liste en chaîne de caractères en Python
  • Quelle est la différence entre del, remove et pop sur les listes Python
  • Comment vérifier rapidement si une valeur existe dans une liste Python
  • Comment dédupliquer une liste en Python
  • Comment aplatir une liste en Python
  • Comment créer une liste avec une taille spécifique en Python
  • comments powered by Disqus