Python String heeft geen ingebouwde reverse() functie. Er zijn echter verschillende manieren om een string in Python om te keren.
1. Hoe een String in Python om te keren?
Enkele veelvoorkomende manieren om een string om te keren zijn:
- Gebruik van Slicing om een omgekeerde kopie van de string te maken.
- Gebruik van for-lus en het toevoegen van tekens in omgekeerde volgorde
- Gebruik van while-lus om de tekens van de string in omgekeerde volgorde te doorlopen en ze toe te voegen
- Gebruik van string join() functie met reversed() iterator
- Creëren van een lijst vanuit de string en vervolgens de
reverse()
functie ervan aanroepen - Gebruik van Recursie
1.1) Python Reverse String met Slicing
def reverse_slicing(s):
return s[::-1]
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using slicing =', reverse_slicing(input_str))
Als je het bovenstaande Python-script uitvoert, zal de uitvoer zijn:
Reverse String using slicing = FE∂çBA
1.2) Omgekeerde String met behulp van For Loop
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))
Uitvoer: Omgekeerde String met for-lus = FE∂çBA
1.3) Een string omkeren met behulp van een while-lus
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) Een string omkeren met join() en reversed()
def reverse_join_reversed_iter(s):
s1 = ''.join(reversed(s))
return s1
1.5) Python Reverse String met behulp van List reverse()
def reverse_list(s):
temp_list = list(s)
temp_list.reverse()
return ''.join(temp_list)
1.6) Python Reverse String met behulp van Recursie
def reverse_recursion(s):
if len(s) == 0:
return s
else:
return reverse_recursion(s[1:]) + s[0]
2. Beste manier om een string om te keren in Python
We kunnen een string omkeren met behulp van meerdere algoritmes. We hebben er al zes van gezien. Maar welke moet je kiezen om een string om te keren? We kunnen de timeit-module gebruiken om meerdere iteraties van deze functies uit te voeren en de gemiddelde tijd te krijgen die nodig is om ze uit te voeren. Alle bovenstaande functies zijn opgeslagen in een Python-script genaamd string_reverse.py
. Ik heb al deze functies één voor één uitgevoerd voor 1.00.000 keer met behulp van de timeit-module en kreeg het gemiddelde van de beste 5 runs.
$ 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
De onderstaande tabel presenteert de resultaten en de traagheid van een algoritme vanaf de beste.
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. Samenvatting
We zouden slicing moeten gebruiken om een string om te keren in Python. De code is erg eenvoudig en klein en we hoeven onze eigen logica niet te schrijven om de string om te keren. Bovendien is het de snelste manier om een string om te keren, zoals geïdentificeerd door de bovenstaande testuitvoeringen.
Je kunt de volledige Python-script en meer Python-voorbeelden bekijken op onze [GitHub Repository](https://github.com).
4. Referenties
Source:
https://www.digitalocean.com/community/tutorials/python-reverse-string