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)
user1653402
la source
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 ...

Joran Beasley
la source
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)
Polaris
la source
7

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

" ".join(map(str, my_list))
Athar
la source
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.

Abhay Tiwari
la source
1

"".join([i for i in my_list])

Cela devrait fonctionner comme vous l'avez demandé!

Abhishek Thulasi
la source
-9

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

Anonyme
la source
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