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, ouitertools.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
Résultat :
apple, banana, cherryPassez un string vide '' comme délimiteur pour concaténer sans aucun séparateur.
Délimiteurs courants
| Délimiteur | Expression | Ré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, 30Utiliser une expression génératrice produit le même résultat et vous permet de formater chaque nombre au fur et à mesure :
Résultat :
12345Construire 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 threeChoisir la bonne approche
| Objectif | Meilleure méthode |
|---|---|
| Fusionner deux listes en une nouvelle liste | opérateur + |
| Ajouter tous les éléments d'une liste dans une autre | extend() |
| Combiner plusieurs itérables sans copie supplémentaire | itertools.chain() |
| Combiner dans un littéral ou avec des éléments supplémentaires | décompactage [*a, *b] |
| Transformer une liste de chaînes en string délimité | str.join() |
| Transformer une liste de nombres en string | str.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
foretwhile - 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