HOWTO · Python

Comment convertir une liste en chaîne de caractères en Python

Ce tutoriel montre comment convertir une liste en chaîne de caractères en Python

Sur cette page

Pour transformer une liste en une seule chaîne, appelez join() sur le séparateur et transmettez-lui la liste de chaînes. Le séparateur est inséré entre les éléments voisins, jamais avant le premier ni après le dernier. Pour des nombres ou des valeurs de types différents, convertissez d’abord chaque élément en texte. Utilisez join() pour assembler le résultat, puis une compréhension, map() ou une boucle pour préparer les éléments.

Convertir une liste de chaînes avec join()

Exécutez cet exemple :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

words = ["Hello", "World", "from", "Python"]
print("".join(words))
print(" ".join(words))

Cet exemple montre deux choix de séparateur. Un séparateur vide concatène directement les chaînes ; un séparateur constitué d’un espace insère un espace entre chaque paire. Vous pouvez utiliser n’importe quelle chaîne comme séparateur, par exemple ", ", "-" ou " | ". Les éléments eux-mêmes ne changent pas.

join() accepte un itérable dont les éléments sont des chaînes. Il fonctionne aussi avec les tuples et d’autres itérables de chaînes, mais une liste est courante lorsque les valeurs sont déjà réunies. Si un élément est un entier ou une autre valeur qui n’est pas une chaîne, appeler join() sur la collection déclenche une TypeError. Convertissez ces valeurs avant de les joindre, sans attendre de join() qu’il les convertisse implicitement.

Convertir les éléments non textuels avant de les joindre

Utilisez str() pour obtenir une représentation textuelle de chaque valeur, puis joignez ces chaînes :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

values = [12, 7, 31]
result = ", ".join(str(value) for value in values)
print(result)

L’expression str(value) for value in values est une expression génératrice qui fournit les chaînes converties à join(). Si vous avez précisément besoin d’une liste des éléments convertis pour les réutiliser plus tard, utilisez une compréhension de liste :

values = [12, 7, 31]
strings = [str(value) for value in values]
result = ", ".join(strings)
print(result)

str() produit une représentation lisible par une personne ; ce n’est pas un format de sérialisation général pour les données structurées. Par exemple, convertir ainsi une liste imbriquée ou un dictionnaire ne produit pas un format fiable pour enregistrer ces données et les reconstituer. Si vous devez stocker ou échanger des données tout en préservant leur structure, utilisez un format conçu pour la sérialisation.

Choisir entre une compréhension de liste et map()

Une compréhension rend visible la conversion ou toute autre transformation appliquée à chaque élément, à côté des valeurs qu’elle produit. Elle convient lorsque vous devez modifier, filtrer ou expliquer la transformation dans la même expression. La forme génératrice de la section précédente fournit des éléments à join() sans créer d’abord une autre liste ; utilisez des crochets si une liste réutilisable vous est utile.

map() applique une fonction à chaque élément et renvoie un itérateur. Pour une conversion directe sans autre logique, cette forme peut être concise :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

values = [12, 7, 31]
result = ", ".join(map(str, values))
print(result)

Les deux approches convertissent chaque nombre avec str() avant que join() assemble le résultat. Préférez la forme qui rend la transformation la plus facile à comprendre pour vos lecteurs. Aucune des deux méthodes ne modifie la liste d’origine. Pour une conversion personnalisée, remplacez str par une fonction qui renvoie une chaîne pour chaque élément.

Construire une chaîne avec une boucle for

Une boucle est utile lorsque chaque élément nécessite un traitement conditionnel ou plusieurs étapes avant d’être ajouté. Pour joindre des éléments simplement, utilisez join() ; concaténer les chaînes de façon répétée dans une boucle peut entraîner des copies supplémentaires à mesure que le résultat grandit. Si une boucle est nécessaire, rassemblez les fragments, puis joignez-les une seule fois à la fin :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

words = ["Python", "is", "useful"]
parts = []
for word in words:
    parts.append(word)
result = " ".join(parts)
print(result)

Le séparateur contrôle toujours les espaces ; cette méthode évite donc d’ajouter puis de supprimer un espace final. Vous pouvez aussi ajouter une logique dans la boucle, par exemple pour ignorer certains éléments ou formater chacun d’eux, à condition que chaque fragment rassemblé soit une chaîne. Pour une liste d’entiers, ajoutez str(value) plutôt que l’entier lui-même.

Dans les cas courants, appelez join() sur le séparateur : utilisez "".join(words) pour une concaténation directe ou " ".join(words) pour obtenir du texte séparé par des espaces. Si les éléments ne sont pas déjà des chaînes, convertissez-les d’abord avec une compréhension ou map(). Utilisez une boucle lorsqu’elle clarifie le traitement de chaque élément, et privilégiez une seule opération de jointure pour assembler de nombreux fragments.