5 techniques expertes pour inverser une chaîne de caractères en Python
Une chaîne de caractères est une séquence ordonnée de caractères. Python ne possède pas de fonction intégrée pour inverser une chaîne, mais plusieurs méthodes permettent d'y parvenir. Ce tutoriel présente cinq approches différentes.
Méthode 1 : Inversion avec une boucle for
def inverser_chaine(chaine):
chaine_inversee = ""
for caractere in chaine:
chaine_inversee = caractere + chaine_inversee
return chaine_inversee
chaine = "Guru99"
print(f"Inversion avec une boucle for")
print(f"Chaîne originale : {chaine}")
print(f"Chaîne inversée : {inverser_chaine(chaine)}")
Sortie :
Inversion avec une boucle for Chaîne originale : Guru99 Chaîne inversée : 99uruG
Explication : On parcourt chaque caractère et on le préfixe à la nouvelle chaîne, construisant ainsi l'inverse.
Méthode 2 : Inversion avec une boucle while
chaine = "Python"
chaine_inversee = ""
print(f"Inversion avec une boucle while")
print(f"Chaîne originale : {chaine}")
compteur = len(chaine)
while compteur > 0:
chaine_inversee += chaine[compteur - 1]
compteur -= 1
print(f"Chaîne inversée : {chaine_inversee}")
Sortie :
Inversion avec une boucle while Chaîne originale : Python Chaîne inversée : nohtyP
Explication : On utilise un index décroissant pour accéder aux caractères de la fin vers le début.
Méthode 3 : Inversion avec l'opérateur de tranchage (slicing)
def inverser(chaine):
return chaine[::-1]
chaine = "Let's guru99"
print(f"Inversion par slicing")
print(f"Chaîne originale : {chaine}")
print(f"Chaîne inversée : {inverser(chaine)}")
Sortie :
Inversion par slicing Chaîne originale : Let's guru99 Chaîne inversée : 99urug s'teL
Explication : La syntaxe [::-1] crée une copie de la chaîne avec un pas de -1 (parcours inverse). C'est la méthode la plus pythonique et la plus performante.
Méthode 4 : Inversion avec la fonction reversed()
def inverser(chaine):
return "".join(reversed(chaine))
chaine = "guru99"
print(f"Inversion avec reversed()")
print(f"Chaîne originale : {chaine}")
print(f"Chaîne inversée : {inverser(chaine)}")
Sortie :
Inversion avec reversed() Chaîne originale : guru99 Chaîne inversée : 99urug
Explication : reversed() renvoie un itérateur inverse, que join() recombine en chaîne.
Méthode 5 : Inversion par récursivité
def inverser(chaine):
if len(chaine) == 0:
return chaine
else:
return inverser(chaine[1:]) + chaine[0]
chaine = "I love guru99"
print(f"Inversion par récursivité")
print(f"Chaîne originale : {chaine}")
print(f"Chaîne inversée : {inverser(chaine)}")
Sortie :
Inversion par récursivité Chaîne originale : I love guru99 Chaîne inversée : 99urug evol I
Explication : La fonction s'appelle elle-même en retirant le premier caractère à chaque appel, puis l'ajoute à la fin au retour de la récursion.
Conclusion
- Le slicing
[::-1]est la méthode la plus concise et la plus rapide. - Les boucles
foretwhilesont pédagogiques pour comprendre la logique. reversed()+join()est lisible et fonctionnel.- La récursivité est élégante mais moins efficace pour les longues chaînes (risque de dépassement de pile).
- Choisissez selon la lisibilité, la performance et le contexte.
Python
- Contrôle de boucles Python : break, continue et pass expliqués avec exemples pratiques
- Maîtriser les exceptions personnalisées Python : guide pratique
- Fondamentaux des dictionnaires Python : Clés, valeurs et accès
- Maîtriser la gestion d'exceptions Python : utiliser try, except, finally et raise efficacement
- Maîtriser le débogage Python : techniques efficaces et meilleures pratiques
- Vérifier votre version Python sur Linux, macOS et Windows : Guide rapide
- Maîtriser le décorateur @property de Python : getters et setters propres et compatibles
- Maîtriser le métaprogrammation Python : Techniques avancées de métaclasses
- Maîtriser les types de données Python : Guide pratique