Comment convertir une liste en une chaîne avec des espaces en Python?


93

Comment puis-je convertir une liste en une chaîne séparée par des espaces en Python?

Par exemple, je souhaite convertir cette liste:

my_list = [how,are,you]

Dans la chaîne "how are you"

Les espaces sont importants. Je ne veux pas obtenir ce howareyouque j'ai fait avec ma tentative d'utilisation jusqu'à présent

"".join(my_list)

18
Protip: ne pas utiliser listcomme nom de variable.
Tim Pietzcker

Réponses:


196
" ".join(my_list)

vous devez joindre avec un espace pas une chaîne vide ...


7
Un code comme celui-ci est pourquoi j'aime Python. Si simple.
Josh

et si nous avons une chaîne dans ce format, list = ['how ', 'are ', 'you '] comment la convertir en liste.
Muhammad Taqi

1
@MuhammadTaqi puis dépouillez simplement l'élément be4 se joignant ..." ".join([i.strip() for i in my_list)
JACK ZHANG

17

Je vais ajouter cela comme une alternative juste pour le plaisir, même si c'est à peu près inutile par rapport aux " ".join(my_list)cordes. Pour les non-chaînes (comme un tableau d'entiers), cela peut être mieux:

" ".join(str(item) for item in my_list)

7

Pour Non String, listnous pouvons également faire comme ça

" ".join(map(str, my_list))

2

Donc, pour obtenir le résultat souhaité, nous devons d'abord savoir comment fonctionne la fonction.

La syntaxe de la join()méthode décrite dans la documentation python est la suivante:

string_name.join(iterable)

Choses à noter:

  • Il renvoie un stringconcaténé avec les éléments de iterable. Le séparateur entre les éléments étant le string_name.
  • Toute valeur non-chaîne dans le iterablelèvera unTypeError

Maintenant, pour ajouter des espaces blancs , il suffit de remplacer le string_namepar un " "ou les ' 'deux fonctionneront et placer le iterableque nous voulons concaténer.

Donc, notre fonction ressemblera à ceci:

' '.join(my_list)

Mais que se passe-t-il si nous voulons ajouter un nombre particulier de white spaces entre nos éléments dans le iterable?

Nous devons ajouter ceci:

str(number*" ").join(iterable)

ici le number sera une entrée utilisateur.

Donc, par exemple si number=4 .

Ensuite, la sortie de str(4*" ").join(my_list)sera how are you, donc entre chaque mot, il y a 4 espaces blancs.



-9

Pourquoi n'ajoutez-vous pas un espace dans les éléments de la liste elle-même, comme:
list = ["how ", "are ", "you "]


Vous avez rédigé cette réponse de manière à ce qu'elle semble plus appropriée sous la forme d'un commentaire. Il serait plus avantageux que vous développiez cette réponse pour expliquer pourquoi ce que vous suggérez fonctionne.
Andon M. Coleman

1
Ceci n'est pas fonctionnel dans un cas où vous n'avez pas accès à la liste (par exemple lorsqu'elle est générée avec input(a).split(b))
TheSola10

nous ne devons pas changer les cordes internes car cela nous cause une perte d'espace
Deepak Yadav
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.