October 27, 2009

Brève de code #1: inverser une chaîne de caractère en python

Comment inverser une chaîne de caractère python ?
Rien de plus simple:

alph = 'abcdef'  
rev  = alph[::-1]

print alph, rev  

Explications

En python, une chaîne de caractère peut être accédée comme un tableau de caractères.
Ainsi, alph[1] retourne le caractère b (la numérotation débute à 0).

Les crochets [ et ] permet de récupérer un unique élément d'un tableau si on ne spécifie qu'un indice. Avec deux indices, on extrait un slice (un sous-ensemble «virtuel» du tableau, c-à-d qu'on ne crée pas un nouveau tableau).

par exemple, alph[1:4], équivalent à alph[1:-2], retourne le slice ['b', 'c', 'd'].
alph[:] est le slice qui débute au début du tableau et s'arrête à la fin, autant dire le tableau complet :)

En rajoutant un troisième paramètre, on défini le pas de progression (qui est de 1 si non précisé): alph[1:4:2] retourne ['b', 'd'].

Si l'on reprend donc l'instruction nous permettant d'inverser notre chaine, alph[::-1], on a donc un slice couvrant l'ensemble du tableau, avec un pas de -1 (on recule d'un caractère à chaque itération).