Python String hat keine eingebaute reverse() Funktion. Es gibt jedoch verschiedene Möglichkeiten, einen String in Python umzukehren.
1. Wie kann man einen String in Python umkehren?
Einige der gängigen Methoden, um einen String umzukehren, sind:
- Verwendung von Slicing, um eine umgekehrte Kopie des Strings zu erstellen.
- Verwendung einer for-Schleife und Anhängen von Zeichen in umgekehrter Reihenfolge
- Verwendung einer while-Schleife zum Iterieren über Zeichen des Strings in umgekehrter Reihenfolge und Anhängen
- Verwendung der string join() Funktion mit dem reversed() Iterator
- Erstellen einer Liste aus dem String und dann Aufrufen seiner
reverse()
Funktion - Verwendung von Rekursion
1.1) Python Reverse String 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 obenstehende Python-Skript ausführen, lautet die Ausgabe:
Reverse String using slicing = FE∂çBA
1.2) String umkehren mit 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 mit for-Schleife umkehren = FE∂çBA
1.3) String mit 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) String mit join() und reversed() umkehren
def reverse_join_reversed_iter(s):
s1 = ''.join(reversed(s))
return s1
1.5) Python String mit List reverse() umkehren
def reverse_list(s):
temp_list = list(s)
temp_list.reverse()
return ''.join(temp_list)
1.6) Python String mit Rekursion umkehren
def reverse_recursion(s):
if len(s) == 0:
return s
else:
return reverse_recursion(s[1:]) + s[0]
2. Bester Weg, einen String in Python umzukehren
Wir können einen String durch mehrere Algorithmen umkehren. Wir haben bereits sechs davon gesehen. Aber welchen davon sollten wir 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 für ihre Ausführung benötigt wird. Alle oben genannten Funktionen sind in einem Python-Skript namens string_reverse.py
gespeichert. Ich habe alle diese Funktionen nacheinander 1.00.000 Mal mit Hilfe des Moduls timeit 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 untenstehende Tabelle zeigt die Ergebnisse und die Langsamkeit eines Algorithmus im Vergleich zum besten.
Algorithm | TimeIt Execution Time (Best of 5) | Slowness |
---|---|---|
Slicing | 0.449 usec | 1x |
List reverse() | 2.46 usec | 5.48x |
reversed() + join() | 2.49 usec | 5.55x |
for loop | 5.5 usec | 12.25x |
while loop | 9.4 usec | 20.94x |
Recursion | 24.3 usec | 54.12x |
3. Zusammenfassung
Wir sollten Slicing verwenden, um einen String in Python umzukehren. Der Code ist sehr einfach und klein und wir müssen keine eigene Logik zum Umkehren des Strings schreiben. Außerdem ist es der schnellste Weg, einen String umzukehren, wie durch die oben genannten Testausführungen festgestellt wurde.
Sie können das vollständige Python-Skript und weitere Python-Beispiele aus unserem GitHub-Repository überprüfen.
4. Referenzen
Source:
https://www.digitalocean.com/community/tutorials/python-reverse-string