Comment inverser une chaîne ou une liste en Python (4 méthodes)
Apprenez les différentes techniques idiomatiques en Python pour inverser des séquences avec la complexité temporelle et mémoire associée.
Explications & Fondations Techniques
Le découpage par pas négatif `sequence[::-1]` est l'approche la plus concise et rapide en Python pour inverser une chaîne ou une liste immuable. Elle crée une nouvelle copie inversée en temps linéaire O(n).
La fonction intégrée `reversed()` renvoie un itérateur paresseux (lazy iterator). Elle ne consomme pas de mémoire supplémentaire O(1) et convient parfaitement aux itérations dans une boucle `for`.
Pour une liste modifiable, la méthode `liste.reverse()` inverse les éléments directement en place sans aucune allocation mémoire supplémentaire (in-place, O(1) espace).
Exemple de Code Pratique
Exécuter dans le Playground# Méthode 1 : Slicing élégant (chaînes & listes)
texte = "Carthage"
inverse = texte[::-1]
print("Slicing :", inverse) # 'egahtraC'
# Méthode 2 : reversed() avec join
mots = ["Python", "IA", "Code"]
print("Itérateur :", list(reversed(mots))) # ['Code', 'IA', 'Python']
# Méthode 3 : En place sur liste (zéro copie mémoire)
nombres = [1, 2, 3, 4, 5]
nombres.reverse()
print("En place :", nombres) # [5, 4, 3, 2, 1]Pièges Fréquents & Mauvaises Pratiques
✗ Tenter d'appeler .reverse() sur une chaîne (str)
chaine = "bonjour"
chaine.reverse() # AttributeErrorchaine = "bonjour"
inverse = chaine[::-1]En Python, les chaînes de caractères sont immuables. La méthode `.reverse()` n'existe que sur les listes mutables.
✗ Oublier que .reverse() renvoie None
liste = [1, 2, 3]
resultat = liste.reverse() # resultat vaut None !liste = [1, 2, 3]
liste.reverse()
print(liste) # [3, 2, 1]Les méthodes mutantes en Python renvoient None pour signaler que la modification a eu lieu directement sur l'objet.
Questions Fréquentes
Quelle est la méthode la plus rapide pour inverser une chaîne en Python ?▾
Le slicing `chaine[::-1]` est implémenté directement en C dans l'interpréteur CPython et reste la méthode la plus rapide en temps d'exécution.
Comment inverser une liste sans créer de copie ?▾
Utilisez `ma_liste.reverse()`. L'inversion est effectuée directement sur la zone mémoire existante avec une complexité spatiale de O(1).
Maîtrisez Python pas à pas
Résolvez des défis interactifs directement dans votre navigateur avec retour immédiat et indices progressifs.
