W3docs

Comment joindre des listes en Python

Apprenez à combiner des listes Python avec +, extend(), le décompactage, itertools.chain, et comment str.join() transforme une liste en string.

Python offre plusieurs façons de combiner des listes et de transformer une liste de chaînes en une seule chaîne. Cette page couvre clairement ces deux tâches :

  • Joindre des listes — fusionner deux listes ou plus en une nouvelle liste (en utilisant +, extend(), le décompactage, ou itertools.chain).
  • Joindre les éléments d'une liste en un string — en utilisant la méthode str.join(), qui concatène les éléments d'une liste en un string délimité.

Comprendre la différence entre ces deux opérations évite une source de confusion courante pour les débutants.

Joindre deux listes en une seule

Utiliser l'opérateur +

La façon la plus simple de fusionner deux listes est l'opérateur +. Il renvoie une nouvelle liste contenant tous les éléments des deux opérandes sans modifier les originaux.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)

Résultat :

[1, 2, 3, 4, 5, 6]

Vous pouvez enchaîner + pour fusionner plus de deux listes en une seule expression : a + b + c.

Utiliser la méthode extend()

extend() ajoute tous les éléments d'une liste à la fin d'une autre en place. Contrairement à +, elle modifie la liste originale et n'en crée pas une nouvelle.

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

Résultat :

[1, 2, 3, 4, 5, 6]

Utilisez extend() lorsque vous n'avez pas besoin de conserver list1 intacte et que vous souhaitez éviter de créer une copie supplémentaire en mémoire.

extend() vs append() : append() ajoute son argument comme un seul élément, donc list1.append(list2) produit [1, 2, 3, [4, 5, 6]] — une liste imbriquée, pas une liste fusionnée. Utilisez toujours extend() lorsque vous souhaitez aplatir la deuxième liste dans la première.

Utiliser le décompactage (opérateur *)

Python 3.5 et les versions ultérieures autorisent la syntaxe de décompactage avec l'étoile à l'intérieur d'un littéral de liste. C'est concis et fonctionne avec n'importe quel nombre d'itérables dans une seule expression.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = [*list1, *list2]
print(combined)

Résultat :

[1, 2, 3, 4, 5, 6]

Vous pouvez également insérer des éléments supplémentaires en ligne : [0, *list1, *list2, 7].

Utiliser itertools.chain()

itertools.chain() de la bibliothèque standard joint un nombre quelconque d'itérables de façon paresseuse — aucune liste intermédiaire n'est créée tant que vous ne demandez pas les valeurs. C'est l'option la plus économe en mémoire lorsque vous traitez de grandes séquences.

import itertools

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list(itertools.chain(list1, list2))
print(combined)

Résultat :

[1, 2, 3, 4, 5, 6]

Passez itertools.chain(*nested) pour aplatir une liste de listes en un seul appel.

Joindre les éléments d'une liste en un string avec str.join()

str.join() est une méthode de string — elle est appelée sur le string délimiteur et prend un itérable comme argument. Elle renvoie un seul string avec tous les éléments concaténés, séparés par le délimiteur.

delimiter.join(iterable)

Exemple de base

python— editable, runs on the server

Résultat :

apple, banana, cherry

Passez un string vide '' comme délimiteur pour concaténer sans aucun séparateur.

Délimiteurs courants

DélimiteurExpressionRésultat
Virgule-espace', '.join(['a', 'b', 'c'])a, b, c
Espace' '.join(['Python', 'is', 'great'])Python is great
Tiret'-'.join(['2024', '01', '15'])2024-01-15
Nouvelle ligne'\n'.join(['line one', 'line two'])bloc multiligne
Sans séparateur''.join(['H', 'i', '!'])Hi!

Joindre une liste de nombres

str.join() requiert que chaque élément soit un string. Passer des entiers directement lève une TypeError. Convertissez-les d'abord avec map(str, ...) ou une expression générat rice.

nums = [10, 20, 30]
result = ', '.join(map(str, nums))
print(result)

Résultat :

10, 20, 30

Utiliser une expression génératrice produit le même résultat et vous permet de formater chaque nombre au fur et à mesure :

python— editable, runs on the server

Résultat :

12345

Construire des strings multilignes

'\n'.join() est la façon idiomatique de construire un string multiligne à partir d'une liste de lignes sans retours à la ligne en fin de chaîne.

lines = ['line one', 'line two', 'line three']
block = '\n'.join(lines)
print(block)

Résultat :

line one
line two
line three

Choisir la bonne approche

ObjectifMeilleure méthode
Fusionner deux listes en une nouvelle listeopérateur +
Ajouter tous les éléments d'une liste dans une autreextend()
Combiner plusieurs itérables sans copie supplémentaireitertools.chain()
Combiner dans un littéral ou avec des éléments supplémentairesdécompactage [*a, *b]
Transformer une liste de chaînes en string délimitéstr.join()
Transformer une liste de nombres en stringstr.join(map(str, lst))

Sujets connexes

  • Python Lists — créer, indexer et trancher des listes
  • List Methods — référence complète pour append(), extend(), remove(), et plus encore
  • Loop Lists — itérer sur les éléments d'une liste avec for et while
  • Copy Lists — copie superficielle vs copie profonde
  • List Comprehension — construire et transformer des listes en une seule expression
  • Concatenate Strings — d'autres façons de construire des strings à partir de parties

Pratique

Pratique
Which of the following ways can be used to join two lists in Python?
Which of the following ways can be used to join two lists in Python?
Was this page helpful?