W3docs

Strings in Python umkehren: Ein umfassender Leitfaden

Vier Methoden zum Umkehren eines Strings in Python: Slicing, reversed(), list.reverse() und Rekursion — mit ausführbaren Beispielen und Performance-Tipps.

Einen string umkehren bedeutet, die Reihenfolge seiner Zeichen zu ändern, sodass das letzte Zeichen zum ersten wird und so weiter. Python bietet mehrere Möglichkeiten, dies zu tun, jede mit unterschiedlichen Abwägungen hinsichtlich Lesbarkeit, Performance und Speicherverbrauch.

Dieses Kapitel behandelt:

  • Den idiomatischen Einzeiler mit Slice-Notation ([::-1])
  • reversed() in Kombination mit join()
  • Eine In-Place-Listenumkehrung
  • Einen rekursiven Ansatz (nützlich zum Lernen, nicht für den Produktionseinsatz)
  • Praktische Anwendungsfälle: Palindromerkennung und Umkehrung der Wortreihenfolge

Python-strings sind unveränderlich — keine dieser Methoden verändert den ursprünglichen string; alle geben einen neuen zurück.

Methode 1: Slice-Notation (Empfohlen)

Die idiomatischste Python-Methode zum Umkehren eines strings ist der erweiterte Slice [::-1]. Der dreiteilige Slice [start:stop:step] setzt start und stop auf den gesamten string, wenn sie weggelassen werden, und ein Schritt von -1 geht rückwärts durch jedes Zeichen.

python— editable, runs on the server

Dies funktioniert bei jeder Sequenz — Listen, Tupel — nicht nur bei strings. Da der Slice in C innerhalb von CPython implementiert ist, ist er in der Praxis die schnellste Option.

sentence = "Python is great"
print(sentence[::-1])  # taerg si nohtyP

Einen tieferen Einblick in die start/stop/step-Syntax bietet das Kapitel Slicing Strings.

Methode 2: reversed() und join()

Das eingebaute reversed() gibt einen Iterator zurück, der Zeichen vom Ende bis zum Anfang liefert. ''.join() sammelt diese Zeichen zu einem neuen string zusammen.

python— editable, runs on the server

Wann diese Methode gegenüber Slicing bevorzugt werden sollte

reversed() ist expliziter in Bezug auf die Absicht — es liest sich als „verbinde die umgekehrten Zeichen dieses strings." Manche Teams bevorzugen es in Code-Reviews, da es keine Unklarheit darüber lässt, was der leere Slice [::-1] bedeutet. Hinsichtlich der Performance ist Slicing bei typischen string-Längen etwa 5× schneller, da Iterator-Overhead vermieden wird.

Methode 3: For-Schleife

Man kann einen string in umgekehrter Reihenfolge durchlaufen und Zeichen für Zeichen einen neuen string aufbauen. Dieser Ansatz ist ausführlich, macht den Algorithmus aber sichtbar — nützlich in Lernkontexten.

python— editable, runs on the server

Hinweis zur String-Verkettung in einer Schleife

Jedes += erstellt ein neues string-Objekt, da strings unveränderlich sind. Bei sehr langen strings ist dies langsam — O(n²) Zeitkomplexität. Wenn ein umgekehrter string Zeichen für Zeichen aufgebaut werden muss, sollten Zeichen in einer Liste gesammelt und am Ende verbunden werden:

string = "hello world"
chars = []
for char in reversed(string):
    chars.append(char)
reversed_string = ''.join(chars)
print(reversed_string)  # dlrow olleh

In der Praxis sollte Slicing verwendet werden — das Verstehen der Schleifenvariante hilft jedoch, wenn beim Umkehren Filterung oder Transformation angewendet werden soll.

Methode 4: list.reverse()

Den string in eine Liste von Zeichen umwandeln, die In-Place-Methode .reverse() aufrufen und dann wieder verbinden:

string = "hello"
chars = list(string)
chars.reverse()          # mutates the list in place
reversed_string = ''.join(chars)
print(reversed_string)  # olleh
print(string)           # hello (original unchanged)

Dies benötigt mehr Speicher als der Slice-Ansatz, da eine vollständige Listenkopie erstellt wird, ist aber explizit und leicht lesbar. Die Methode .reverse() ist in den Python string methods dokumentiert.

Methode 5: Rekursion

Eine rekursive Funktion ruft sich selbst mit einer kürzeren Version des strings auf, bis der Basisfall (leerer string) erreicht ist:

python— editable, runs on the server

Fallstrick: Rekursionstiefenlimit

Pythons Standard-Rekursionslimit beträgt 1000 (sys.getrecursionlimit()). Ein string, der länger als ~990 Zeichen ist, löst RecursionError aus. Dieser Ansatz sollte nur zu Demonstrationszwecken verwendet werden; für Produktionscode ist Slicing oder reversed() vorzuziehen.

Praktische Anwendungsfälle

Palindromerkennung

Ein Palindrom liest sich vorwärts wie rückwärts gleich. Umkehren und Vergleichen ist die einfachste Prüfung:

def is_palindrome(text):
    cleaned = text.lower().replace(" ", "")
    return cleaned == cleaned[::-1]

print(is_palindrome("racecar"))                    # True
print(is_palindrome("hello"))                      # False
print(is_palindrome("A man a plan a canal Panama")) # True

Wortreihenfolge in einem Satz umkehren

Den gesamten string umzukehren unterscheidet sich vom Umkehren der Wortreihenfolge. Um die Wortreihenfolge zu ändern, in eine Liste aufteilen und diese umkehren:

sentence = "Hello World Python"
reversed_words = " ".join(sentence.split()[::-1])
print(reversed_words)  # Python World Hello

Weitere String-Transformationstechniken sind unter Modify Strings zu finden.

Welche Methode sollte verwendet werden?

MethodeLesbarSchnellSpeicherVerwenden wenn…
[::-1]JaAm schnellstenGeringFast immer — das ist das Python-Idiom
reversed() + join()JaSchnellGeringDie Absicht explizit gemacht werden soll
For-SchleifeAusführlichLangsam (O n²)GeringZum Lernen oder wenn beim Umkehren gefiltert/transformiert werden soll
list.reverse()JaMittelHöherBereits eine Liste vorhanden ist und In-Place-Mutation gewünscht wird
RekursionJaLangsamStackNur für akademische / Interview-Demonstrationen

Für fast allen realen Code ist string[::-1] die richtige Wahl: es ist prägnant, schnell und für jeden Python-Entwickler sofort erkennbar.

Übung

Übung
Which of the following correctly reverses the string 'Python'?
Which of the following correctly reverses the string 'Python'?
Was this page helpful?