Les chaînes Python n’ont pas de fonction reverse() intégrée. Cependant, il existe différentes façons de renverser une chaîne en Python.
1. Comment renverser une chaîne en Python?
Voici quelques-unes des méthodes courantes pour inverser une chaîne :
- Utilisation du tranchage pour créer une copie inversée de la chaîne.
- Utilisation d’une boucle for et ajout de caractères dans l’ordre inverse
- Utilisation d’une boucle while pour itérer sur les caractères de la chaîne dans l’ordre inverse et les ajouter
- Utilisation de la fonction join() de la chaîne avec l’itérateur reversed()
- Création d’une liste à partir de la chaîne, puis appel de sa fonction
reverse()
- Utilisation de la récursivité
1.1) Inversion d’une chaîne Python en utilisant le tranchage
def reverse_slicing(s):
return s[::-1]
input_str = 'ABç∂EF'
if __name__ == "__main__":
print('Reverse String using slicing =', reverse_slicing(input_str))
Si vous exécutez le script Python ci-dessus, la sortie sera :
Reverse String using slicing = FE∂çBA
1.2) Inverser une chaîne à l’aide d’une boucle for
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))
Sortie : Inverser une chaîne à l'aide d'une boucle for = FE∂çBA
1.3) Inverser une chaîne à l’aide d’une boucle while
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) Inverser une chaîne à l’aide de join() et reversed()
def reverse_join_reversed_iter(s):
s1 = ''.join(reversed(s))
return s1
1.5) Inverser une chaîne Python à l’aide de List reverse()
def reverse_list(s):
temp_list = list(s)
temp_list.reverse()
return ''.join(temp_list)
1.6) Inverser une chaîne Python à l’aide de la récursivité
def reverse_recursion(s):
if len(s) == 0:
return s
else:
return reverse_recursion(s[1:]) + s[0]
2. Meilleure façon de inverser une chaîne en Python
Nous pouvons inverser une chaîne grâce à plusieurs algorithmes. Nous en avons déjà vu six. Mais lequel choisir pour inverser une chaîne ? Nous pouvons utiliser le module timeit pour exécuter plusieurs itérations de ces fonctions et obtenir le temps moyen nécessaire pour les exécuter. Toutes les fonctions ci-dessus sont stockées dans un script Python nommé string_reverse.py
. J’ai exécuté toutes ces fonctions une par une 1,00,000 fois en utilisant le module timeit et obtenu la moyenne des 5 meilleures exécutions.
$ 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
Le tableau ci-dessous présente les résultats et la lenteur d’un algorithme à partir du meilleur.
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. Résumé
Nous devrions utiliser le découpage (slicing) pour inverser une chaîne en Python. Son code est très simple et petit, et nous n’avons pas besoin d’écrire notre propre logique pour inverser la chaîne. De plus, c’est la manière la plus rapide d’inverser une chaîne, comme identifié par les exécutions de test ci-dessus.
Vous pouvez consulter le script Python complet et plus d’exemples Python depuis notre Repository GitHub.
4. Références
Source:
https://www.digitalocean.com/community/tutorials/python-reverse-string