Passer au contenu principal
eLearner.app
Module 4 · Leçon 2 sur 414/36 dans le cours~10 min
Leçons du module (2/4)

Slicing et indexation

En Python, les chaînes sont des séquences de caractères : vous pouvez accéder à des caractères individuels par index et extraire des sous-chaînes avec la syntaxe de tranche [start:stop:step] — exactement comme pour les listes.

Index positifs et négatifs

Python
s = "Python"
#    0123456
#   -6-5-4-3-2-1
s[0]    # 'P'
s[5]    # 'n'
s[-1]   # 'n'   (ultimo)
s[-2]   # 'o'   (penultimo)

L'accès hors limites lève un IndexError.

Tranchage (Slicing) [start:stop:step]

Python
s = "Python"
s[0:3]    # 'Pyt'      indici 0,1,2 (stop ESCLUSO)
s[2:]     # 'thon'     dal 2 alla fine
s[:3]     # 'Pyt'      dall'inizio fino al 3 (escluso)
s[:]      # 'Python'   copia completa
s[-3:]    # 'hon'      ultimi 3
s[:-2]    # 'Pyth'     tutto tranne gli ultimi 2

Contrairement à l'indexation, le tranchage ne lève PAS d'erreur si les index sont hors limites : il extrait ce qu'il peut.

Le troisième argument : step

Python
s = "Python"
s[::2]    # 'Pto'    salta uno sì uno no
s[1::2]   # 'yhn'    dispari
s[::-1]   # 'nohtyP' INVERSIONE (idiom famoso)

s[::-1] est le moyen idiomatique d'inverser une chaîne.

Longueur et inclusion

Python
len("Python")        # 6
"th" in "Python"     # True
"java" in "Python"   # False

Index négatifs et pas (step) dans le tranchage

La syntaxe complète du tranchage est s[start:stop:step]. Si vous omettez start et stop mais définissez un pas step négatif de -1 (s[::-1]), vous inversez la chaîne. L'index négatif -1 représente toujours le dernier caractère de la chaîne, -2 l'avant-dernier, etc.

À vous de jouer

Exercice#python.m4.l2.e1
Tentatives : 0Chargement…

Étant donné `word = 'PROGRAMMAZIONE'`, obtenez son inverse dans `reversed_word`. Évaluez `reversed_word`.

Chargement de l'éditeur…
Afficher l'indice

word[::-1]

Solution disponible après 3 tentatives

Exercice de révision

Exercice#python.m4.l2.e2
Tentatives : 0Chargement…

Étant donné `email = 'ada@example.com'`, extrayez le domaine (tout après '@') dans `domain` à l'aide du tranchage après avoir trouvé l'index avec .find. Évaluez `domain`.

Chargement de l'éditeur…
Afficher l'indice

email[email.find('@') + 1:]

Solution disponible après 3 tentatives

Défi supplémentaire

Exercice#python.m4.l2.e3
Tentatives : 0Chargement…

Étant donné la chaîne `word = "pythonista"`, utilisez le tranchage pour extraire les 3 premiers caractères et les 3 derniers caractères, et concaténez-les dans une nouvelle chaîne `short_word`. Enfin, évaluez `short_word` (elle doit donner `'pytsta'`).

Chargement de l'éditeur…
Afficher l'indice

Les 3 premiers caractères sont word[:3], les 3 derniers sont word[-3:]. Concaténez les deux tranches.

Solution disponible après 3 tentatives