Les listes (partie 2)
Le cas spéciaux de l’indexation des listes
L’indexation des listes en Python présente certains cas particuliers qu’il est important de maîtriser.
Indexation négative
Les listes acceptent une indexation négative. Cela vous permet d'accéder facilement aux éléments à partir de la fin :
fruits = ['pomme', 'banane', 'orange', 'kiwi']
print(fruits[-1]) # kiwi (dernier élément)
print(fruits[-2]) # orange (avant-dernier élément)
Tranches (slices) sans borne
Les listes permettent également l'utilisation de « tranches » (slices) :
- Si la borne initiale n’est pas indiquée, la tranche commencera au premier élément (indice
0
). - Si la borne finale n’est pas indiquée, la tranche s'étendra jusqu’au dernier élément.
Exemples :
nombres = [10, 20, 30, 40, 50]
print(nombres[:3]) # [10, 20, 30]
print(nombres[2:]) # [30, 40, 50]
print(nombres[:]) # [10, 20, 30, 40, 50] (copie complète de la liste)
Slicing avec un pas (step)
Il est possible d'ajouter un pas dans une tranche afin d'obtenir des éléments à intervalles réguliers :
Syntaxe : liste[début:fin:pas]
- Si le pas est positif, la liste est parcourue de gauche à droite.
- Si le pas est négatif, la liste est parcourue en sens inverse.
Exemples :
lettres = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
print(lettres[::2]) # ['a', 'c', 'e', 'g'] (éléments avec un saut de 2)
print(lettres[::-1]) # ['g', 'f', 'e', 'd', 'c', 'b', 'a'] (inverse la liste)
print(lettres[5:1:-1]) # ['f', 'e', 'd', 'c'] (parcourt en arrière de l'indice 5 à 2)
Mise à part pour le cas d'inversion de la liste (lettres[::-1]
), les tranches avec un pas négatif sont difficiles à
interpréter. Utilisez les avec parcimonie.
Gestion des erreurs d’indexation
Si vous tentez d’accéder à un élément hors des indices disponibles dans une
liste, Python déclenchera une erreur de type IndexError
:
couleurs = ['rouge', 'bleu', 'vert']
print(couleurs[3]) # IndexError: list index out of range
Cependant, si vous utilisez des tranches, aucune erreur ne sera déclenchée. Python retournera simplement une liste vide si la tranche dépasse les indices existants :
print(couleurs[5:10]) # []
Testez votre compréhension
🤔 Testez votre compréhension
- Q1
- Q2
- Q3
- Q4
- Q5
Que retourne l'instruction suivante ?
lst = ['a', 'b', 'c', 'd']
print(lst[-2])
Quelle liste est obtenue avec ce slicing ?
lst = [1, 2, 3, 4, 5]
print(lst[:3])
Que produit l'instruction suivante ?
lst = [10, 20, 30, 40]
print(lst[::-1])
Quel résultat sera affiché par ce code ?
lst = ['x', 'y', 'z']
print(lst[5:])
Quelle est la sortie du slicing suivant ?
lst = ['a', 'b', 'c', 'd', 'e', 'f']
print(lst[1:5:2])