Website-Suche

Python Zeichenfolge umkehren - 5 Möglichkeiten und die beste


Python-Strings haben keine integrierte Funktion reverse(). Es gibt jedoch verschiedene Möglichkeiten, einen String in Python umzudrehen.

1. Wie man einen String in Python umkehrt?

Einige der gängigen Methoden zum Umkehren eines Strings sind:

  • Slicing verwenden, um eine umgekehrte Kopie des Strings zu erstellen.
  • Verwendung einer for-Schleife und Anhängen von Zeichen in umgekehrter Reihenfolge
  • Verwendung einer While-Schleife, um die Zeichen einer Zeichenfolge in umgekehrter Reihenfolge zu durchlaufen und sie anzufügen.
  • Verwendung der Funktion string join() mit dem reversed() Iterator
  • Eine Liste aus dem String erstellen und dann die reverse()-Funktion aufrufen
  • Rekursion verwenden

1.1) Python Zeichenfolge umkehren mit Slicing

def reverse_slicing(s):
    return s[::-1]

input_str = 'ABç∂EF'

if __name__ == "__main__":
    print('Reverse String using slicing =', reverse_slicing(input_str))

Wenn Sie das obige Python-Skript ausführen, wird die Ausgabe sein:

Reverse String using slicing = FE∂çBA

1.2) Zeichenfolge umkehren mit einer For-Schleife

def reverse_for_loop(s):
    s1 = ''
    for c in s:
        s1 = c + s1  # appending chars in reverse order
    return s1

input_str = 'ABç∂EF'

if __name__ == "__main__":
    print('Reverse String using for loop =', reverse_for_loop(input_str))

Ausgabe: String umkehren mit einer for-Schleife=FE∂çBA

1.3) Eine Zeichenkette mit einer While-Schleife umkehren

def reverse_while_loop(s):
    s1 = ''
    length = len(s) - 1
    while length >= 0:
        s1 = s1 + s[length]
        length = length - 1
    return s1

input_str = 'ABç∂EF'

if __name__ == "__main__":
    print('Reverse String using while loop =', reverse_while_loop(input_str))

1.4) Einen String mit join() und reversed() umkehren

def reverse_join_reversed_iter(s):
    s1 = ''.join(reversed(s))
    return s1

1.5) Python Zeichenfolge umkehren mit der List reverse()

def reverse_list(s):
    temp_list = list(s)
    temp_list.reverse()
    return ''.join(temp_list)

1.6) Python Zeichenkette umkehren mit Rekursion

def reverse_recursion(s):
    if len(s) == 0:
        return s
    else:
        return reverse_recursion(s[1:]) + s[0]

2. Beste Methode, um einen String in Python umzukehren

Wir können einen String durch mehrere Algorithmen umkehren. Wir haben bereits sechs davon gesehen. Aber welchen davon sollten Sie wählen, um einen String umzukehren? Wir können das Modul timeit verwenden, um mehrere Iterationen dieser Funktionen auszuführen und die durchschnittliche Zeit zu ermitteln, die zum Ausführen erforderlich ist. Alle oben genannten Funktionen sind in einem Python-Skript namens string_reverse.py gespeichert. Ich habe alle diese Funktionen nacheinander 100.000 Mal unter Verwendung des timeit-Moduls ausgeführt und den Durchschnitt der besten 5 Durchläufe ermittelt.

python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_slicing("ABç∂EF"*10)'
100000 loops, best of 5: 0.449 usec per loop

python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_list("ABç∂EF"*10)'
100000 loops, best of 5: 2.46 usec per loop

python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_join_reversed_iter("ABç∂EF"*10)'
100000 loops, best of 5: 2.49 usec per loop

python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_for_loop("ABç∂EF"*10)'
100000 loops, best of 5: 5.5 usec per loop

python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_while_loop("ABç∂EF"*10)'
100000 loops, best of 5: 9.4 usec per loop

python3.7 -m timeit --number 100000 --unit usec 'import string_reverse' 'string_reverse.reverse_recursion("ABç∂EF"*10)'
100000 loops, best of 5: 24.3 usec per loop

Die folgende Tabelle präsentiert die Ergebnisse und die Langsamkeit eines Algorithmus im Vergleich zu dem besten.

AlgorithmusZeitIt Ausführungszeit (Beste von 5)Langsamkeit
Schneiden0,449 Mikrosekunden1x
Liste umkehren()5,48x
reversed() + join()5,55x
für Schleife12,25x
while Schleife20,94x
Rekursion24,3 Mikrosekunden54,12x

3. Zusammenfassung

Wir sollten Slicing verwenden, um einen String in Python umzukehren. Der Code dafür ist sehr einfach und klein, und wir müssen unsere eigene Logik zum Umdrehen des Strings nicht schreiben. Außerdem ist es der schnellste Weg, um einen String umzukehren, wie in den obigen Testausführungen festgestellt.

Sie können das vollständige Python-Skript und weitere Python-Beispiele aus unserem GitHub-Repository abrufen.

4. Verweise

  • reversed() API Dokument
  • str.join() API-Dokumentation