Wie konvertiere ich eine Liste in eine Zeichenfolge mit Leerzeichen in Python?

87

Wie kann ich eine Liste in Python in eine durch Leerzeichen getrennte Zeichenfolge konvertieren?

Zum Beispiel möchte ich diese Liste konvertieren:

my_list = [how,are,you]

In die Schnur "how are you"

Die Räume sind wichtig. Ich möchte nicht so werden, howareyouwie ich es bei meinem bisherigen Versuch getan habe

"".join(my_list)
user1653402
quelle
18
Protip: Nicht listals Variablenname verwenden.
Tim Pietzcker

Antworten:

184
" ".join(my_list)

Sie müssen mit einem Leerzeichen verbinden, nicht mit einer leeren Zeichenfolge ...

Joran Beasley
quelle
7
Code wie dieser ist der Grund, warum ich Python mag. So einfach.
Josh
Was ist, wenn wir eine Zeichenfolge in diesem Format haben? list = ['how ', 'are ', 'you '] Wie konvertiert man diese in eine Liste?
Muhammad Taqi
@ MuhammadTaqi dann einfach das Element be4 verbinden ..." ".join([i.strip() for i in my_list)
JACK ZHANG
16

Ich werde dies als Alternative nur zum Teufel einwerfen, obwohl es im Vergleich zu " ".join(my_list)Streichern ziemlich nutzlos ist . Für Nicht-Strings (z. B. ein Array von Ints) ist dies möglicherweise besser:

" ".join(str(item) for item in my_list)
Polaris
quelle
5

Für Non String können listwir das auch so machen

" ".join(map(str, my_list))
Athar
quelle
1

Um eine gewünschte Ausgabe zu erzielen, sollten wir zunächst wissen, wie die Funktion funktioniert.

Die join()in der Python-Dokumentation beschriebene Syntax für die Methode lautet wie folgt:

string_name.join(iterable)

Dinge zu beachten:

  • Es wird eine stringmit den Elementen von verkettete zurückgegeben iterable. Das Trennzeichen zwischen den Elementen ist dasstring_name .
  • Jeder Nicht-String-Wert in iterablewird einen a auslösenTypeError

Um Leerzeichen hinzuzufügen , müssen wir nur die string_namedurch eine " "oder ' 'beide ersetzen. Dies funktioniert und platziert die iterablezu verkettenden Leerzeichen .

Unsere Funktion sieht also ungefähr so ​​aus:

' '.join(my_list)

Aber was ist, wenn wir eine bestimmte Anzahl von white spaceszwischen unseren Elementen in der hinzufügen möchten iterable?

Wir müssen dies hinzufügen:

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

Hier numberwird das eine Benutzereingabe sein.

Also zum Beispiel wenn number=4.

Dann wird die Ausgabe von str(4*" ").join(my_list)sein how are you, so dass zwischen jedem Wort 4 Leerzeichen stehen.

Abhay Tiwari
quelle
1

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

Dies sollte genauso funktionieren, wie Sie gefragt haben!

Abhishek Thulasi
quelle
-9

Warum fügen Sie den Elementen der Liste selbst kein Leerzeichen hinzu, z.
list = ["how ", "are ", "you "]

Anonym
quelle
Sie haben diese Antwort so geschrieben , dass sie in Form eines Kommentars angemessener erscheint. Es wäre vorteilhafter, wenn Sie diese Antwort erweitern würden, um zu erklären, warum das, was Sie vorschlagen, funktioniert.
Andon M. Coleman
1
Dies ist nicht funktionsfähig in einem Fall, in dem Sie keinen Zugriff auf die Liste haben (z. B. wenn mit generiert input(a).split(b))
TheSola10
Wir sollten die internen Zeichenfolgen nicht ändern, da dies zu Platzverlust führt
Deepak Yadav,