HOWTO · Python
Wie man eine Liste in Python in eine Zeichenkette konvertiert
Dieses Tutorial demonstriert, wie man eine Liste in Python in einen String konvertiert
Auf dieser Seite
Um eine Liste in einen einzelnen String umzuwandeln, rufen Sie join() auf dem Trennzeichen auf und übergeben Sie ihm die Liste mit den Strings. Das Trennzeichen wird zwischen benachbarte Elemente eingefügt, nicht vor dem ersten oder nach dem letzten. Bei Zahlen oder gemischten Werten wandeln Sie zuerst jedes Element in Text um. Verwenden Sie join() zum Zusammensetzen und bereiten Sie die Elemente vorher mit einer Comprehension, map() oder einer Schleife auf.
Eine Liste aus Strings mit join() verbinden
Führen Sie dieses Beispiel aus. Die Wörter und die Ausgabe im Beispiel bleiben englisch:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
words = ["Hello", "World", "from", "Python"]
print("".join(words))
print(" ".join(words))
Das Beispiel zeigt zwei Möglichkeiten für das Trennzeichen. Ein leeres Trennzeichen fügt die Strings direkt aneinander; ein Leerzeichen setzt je ein Leerzeichen zwischen zwei Elemente. Als Trennzeichen eignet sich jeder String, zum Beispiel ", ", "-" oder " | ". Die Elemente selbst bleiben unverändert.
join() erwartet ein iterierbares Objekt, dessen Elemente Strings sind. Die Methode funktioniert auch mit Tupeln und anderen iterierbaren String-Sammlungen; eine Liste ist praktisch, wenn die Werte bereits darin gesammelt sind. Ist ein Element eine Ganzzahl oder ein anderer Nicht-String-Wert, löst der Aufruf von join() für die Sammlung einen TypeError aus. Wandeln Sie solche Werte vorher um, statt zu erwarten, dass join() sie automatisch konvertiert.
Nicht-String-Elemente vor dem Verbinden konvertieren
Verwenden Sie str(), um eine String-Darstellung jedes Werts zu erhalten, und verbinden Sie anschließend diese Strings. Die im Beispiel gezeigten Werte und die Ausgabe bleiben englisch:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
values = [12, 7, 31]
result = ", ".join(str(value) for value in values)
print(result)
Der Ausdruck str(value) for value in values ist ein Generatorausdruck, der die konvertierten Strings an join() übergibt. Wenn Sie die konvertierten Elemente später erneut verwenden möchten, erstellen Sie mit einer List Comprehension eine Liste:
values = [12, 7, 31]
strings = [str(value) for value in values]
result = ", ".join(strings)
print(result)
str() erzeugt eine menschenlesbare Darstellung, aber kein allgemeines Serialisierungsformat für strukturierte Daten. Eine verschachtelte Liste oder ein Dictionary wird dadurch beispielsweise nicht zuverlässig in einem Format dargestellt, mit dem sich die Daten speichern und in ihrer ursprünglichen Struktur wiederherstellen lassen. Verwenden Sie ein für die Serialisierung vorgesehenes Format, wenn die Struktur beim Speichern oder Übertragen erhalten bleiben muss.
List Comprehension oder map()?
Bei einer Comprehension ist direkt an den erzeugten Werten erkennbar, wie jedes Element konvertiert oder anderweitig verarbeitet wird. Sie eignet sich, wenn Sie die Transformation im selben Ausdruck ändern, filtern oder erläutern möchten. Die Generatorform aus dem vorherigen Abschnitt übergibt die Werte an join(), ohne zuvor eine weitere Liste zu erstellen. Verwenden Sie eckige Klammern, wenn Sie eine Liste zur späteren Wiederverwendung benötigen.
map() wendet eine Funktion auf jedes Element an und gibt einen Iterator zurück. Für eine direkte Konvertierung ohne zusätzliche Logik ist diese Schreibweise knapp. Die Werte und die Ausgabe im Beispiel bleiben englisch:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
values = [12, 7, 31]
result = ", ".join(map(str, values))
print(result)
Beide Ansätze konvertieren jede Zahl mit str(), bevor join() das Ergebnis zusammensetzt. Wählen Sie die Schreibweise, mit der Ihre Leser die Transformation am leichtesten nachvollziehen können. Keine der beiden Methoden verändert die ursprüngliche Liste. Für eine eigene Konvertierung ersetzen Sie str durch eine Funktion, die für jedes Element einen String zurückgibt.
Mit einer for-Schleife einen String erstellen
Eine Schleife ist nützlich, wenn jedes Element bedingt behandelt werden muss oder vor dem Anhängen mehrere Verarbeitungsschritte erfordert. Für einfaches Verbinden verwenden Sie join(); wiederholtes Verketten von Strings in einer Schleife kann mit wachsendem Ergebnis zusätzliche Kopiervorgänge verursachen. Wenn Sie eine Schleife benötigen, sammeln Sie die Teile und verbinden Sie sie am Ende einmal. Die Wörter und die Ausgabe im Beispiel bleiben englisch:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
words = ["Python", "is", "useful"]
parts = []
for word in words:
parts.append(word)
result = " ".join(parts)
print(result)
Das Trennzeichen bestimmt weiterhin die Abstände. So vermeiden Sie, ein abschließendes Leerzeichen anzufügen und anschließend wieder zu entfernen. In der Schleife können Sie auch Logik ergänzen, etwa bestimmte Elemente zu überspringen oder zu formatieren, solange jedes gesammelte Teil ein String ist. Bei einer Liste mit Ganzzahlen hängen Sie str(value) an, nicht die Ganzzahl selbst.
In den üblichen Fällen rufen Sie join() auf dem Trennzeichen auf: Mit "".join(words) fügen Sie die Elemente direkt aneinander, mit " ".join(words) trennen Sie sie durch Leerzeichen. Sind die Elemente noch keine Strings, konvertieren Sie sie vorher mit einer Comprehension oder map(). Verwenden Sie eine Schleife, wenn dadurch die Verarbeitung der einzelnen Elemente verständlicher wird, und verbinden Sie viele Teile vorzugsweise erst am Ende.