Python Omkeren van String – 5 Manieren en de Beste

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