inversement de chaine avec [:]
Bonjour,
il y a différentes façons d'inverser une chaine de caractères en python.
Ici, je m'intéresse à la façon de recopier une liste ( chaine ) avec [:]
je commence tout d'abord par le classique pour être sûr:
Code:
1 2 3 4 5 6 7
|
str1 = "bonjour"
str2 = str1[0:len(str1):1]
str3 = str1[:]
print(str2)
print(str3) |
j'obtiens deux fois "bonjour"
J'en conclus que str3 est la version simplifiée de str2 et pour str2, on part du premier caractère jusqu'au dernier ( exclu ) de 1 en 1
Si je souhaite inverser la chaine:
Code:
1 2 3 4 5 6 7
|
str1 = "bonjour"
str2 = str1[len(str1):0:-1]
str3 = str1[::-1]
print(str2)
print(str3) |
En partant de ma réflexion plus haut, je pensais avoir encore deux fois le même résultat mais inversé.
Hors, str3 donne bien la chaine inversée, mais il manque le b à la fin pour str2.
Puisque le 0 est exclu, je conçois que le "b" manque, mais si str2 démarre à l'index len(str1), il devrait y avoir une erreur, non ?
Donc, la question: [::-1] est la version simplifiée de quoi ?
disons que je comprends bien [:], mais pour moi, [::-1] ne fonctionne pas de la même manière !
Voilà: un petit détail qui me chagrine...