Lire une position : l’indexation commence à zéro
L’indexation Python permet d’accéder à une donnée précise dans une séquence, comme une liste, une chaîne de caractères ou un tuple. La règle de base est simple : le premier élément porte l’indice 0. Cette logique permet ensuite de lire ou modifier une valeur, d’extraire une partie de séquence, de parcourir des éléments et de retrouver la position d’une donnée.
Lire une position : l’indexation commence à zéro
Une séquence ordonnée associe chaque élément à une position. En Python, cette position s’utilise avec une notation entre crochets : sequence[indice]. Pour la liste couleurs = [« bleu », « vert », « rouge »], l’expression couleurs[0] renvoie « bleu », tandis que couleurs[2] renvoie « rouge ».
Quiz sur l’indexation Python
Testez vos connaissances sur les indices, le slicing, les recherches et l’indexation des données.
Le décalage entre le rang habituel et l’indice Python provoque souvent une erreur au début. Le troisième élément se trouve bien à l’indice 2, car le comptage commence à zéro. Dans cette logique, l’indice correspond au nombre de déplacements depuis le début : aucun déplacement pour le premier élément, un déplacement pour le deuxième, puis deux pour le troisième.
Indices positifs et indices négatifs
Les indices positifs se lisent depuis le début de la séquence. Les indices négatifs partent de la fin : -1 désigne le dernier élément et -2 l’avant-dernier. Avec couleurs[-1], Python renvoie donc « rouge ». Cette notation est pratique lorsque la longueur de la liste peut varier et qu’il faut accéder à sa dernière valeur.
| Expression | Résultat avec [« bleu », « vert », « rouge »] | Usage |
|---|---|---|
| couleurs[0] | « bleu » | Premier élément |
| couleurs[1] | « vert » | Élément à une position connue |
| couleurs[-1] | « rouge » | Dernier élément |
| couleurs[-2] | « vert » | Avant-dernier élément |
Listes modifiables, chaînes immuables
Une liste est mutable : il est possible de remplacer une valeur directement à partir de son indice. Par exemple, couleurs[1] = « jaune » modifie le deuxième élément de la liste. Les tuples et les chaînes de caractères acceptent aussi l’indexation, mais ils sont immuables. Avec mot = « Python », mot[0] renvoie « P », mais l’instruction mot[0] = « p » n’est pas autorisée.
Avant toute modification, il faut donc identifier la structure utilisée. Les mêmes crochets servent à lire un caractère dans une chaîne et à remplacer une valeur dans une liste, mais ces deux opérations ne reposent pas sur les mêmes possibilités. La liste accepte une modification en place, contrairement à la chaîne et au tuple.
Extraire une plage avec le slicing
Le slicing, aussi appelé tranchage, extrait une partie d’une séquence au lieu de viser un seul élément. Sa forme générale est sequence[début:fin:pas]. La borne de début est incluse, tandis que la borne de fin est exclue. Avec nombres = [10, 20, 30, 40, 50], l’expression nombres[1:4] renvoie [20, 30, 40].
Comprendre la borne finale exclusive
La borne finale exclusive rend le calcul du nombre d’éléments plus direct : il correspond à fin – début lorsque le pas vaut 1. Elle permet aussi d’enchaîner des plages sans répéter un élément. Dans l’exemple précédent, nombres[:2] renvoie les deux premières valeurs et nombres[2:] renvoie toutes les suivantes.
- nombres[1:4] sélectionne les indices 1, 2 et 3 ;
- nombres[:3] part du début et s’arrête avant l’indice 3 ;
- nombres[2:] part de l’indice 2 et va jusqu’à la fin ;
- nombres[::2] récupère un élément sur deux ;
- nombres[::-1] renverse la séquence.
Sur une liste Python, un slicing produit une nouvelle liste. Il permet donc d’extraire une sous-liste sans modifier la liste d’origine. Sur une chaîne, il produit également une nouvelle chaîne. Avec NumPy, le comportement peut être différent : une tranche peut être une vue du tableau initial et non une copie indépendante.
Rechercher une valeur : index(), in et count() ne répondent pas au même besoin
La méthode index() ne sert pas à accéder à une position connue. Elle recherche une valeur et renvoie l’indice de sa première occurrence. Avec animaux = [« chat », « chien », « chat »], animaux.index(« chat ») renvoie 0, et non 2. Lorsqu’une valeur apparaît plusieurs fois, la méthode s’arrête donc à la première correspondance.
| Outil | Question traitée | Résultat |
|---|---|---|
| sequence[indice] | Quelle valeur se trouve à cette position ? | Une valeur |
| liste.index(valeur) | Où cette valeur apparaît-elle pour la première fois ? | Un indice |
| valeur in sequence | La valeur est-elle présente ? | True ou False |
| liste.count(valeur) | Combien de fois la valeur apparaît-elle ? | Un nombre |
Utilisez in lorsque seule la présence de la valeur vous intéresse. Choisissez index() si vous devez ensuite exploiter sa position, et count() pour compter ses occurrences. Ces recherches parcourent la séquence jusqu’à trouver la valeur ou atteindre sa fin. L’accès direct par indice, lui, cible immédiatement une position connue.
Éviter ValueError lors d’une recherche
Si la valeur recherchée n’existe pas, liste.index(valeur) déclenche une ValueError. Pour traiter normalement une absence, testez d’abord l’appartenance : if « lapin » in animaux: position = animaux.index(« lapin »). Le programme n’essaie ainsi d’obtenir une position que lorsque la valeur est présente.
Une autre solution consiste à gérer explicitement l’exception. Cette approche convient lorsque l’absence de la valeur doit être signalée ou traitée séparément. Dans tous les cas, index() ne renvoie pas une valeur spéciale pour indiquer l’échec : il lève une exception.
Prévenir IndexError et parcourir proprement une séquence
Une IndexError indique qu’un indice est hors limites. Dans une liste de trois éléments, les indices positifs valides sont 0, 1 et 2. L’expression liste[3] échoue donc. Sur une liste vide, aucun accès comme liste[0] ou liste[-1] n’est possible, car aucun élément ne peut être sélectionné.
- Vérifiez la longueur avec len(sequence) avant un accès calculé.
- Utilisez un entier, car une chaîne ou un nombre décimal ne peut pas servir d’indice de liste.
- Préférez un slicing lorsqu’une borne peut dépasser la longueur : Python renvoie alors les éléments disponibles.
- Évitez de modifier une liste pendant un parcours fondé sur ses indices, sauf si vous maîtrisez les décalages produits.
Pour parcourir simultanément la position et la valeur, enumerate() est généralement plus lisible qu’un accès manuel avec range(len(sequence)). L’instruction for indice, valeur in enumerate(couleurs): fournit directement les deux informations. Elle réduit le risque d’utiliser un indice décalé ou de recalculer inutilement la longueur de la séquence.
Passer aux tableaux NumPy et aux DataFrames pandas
NumPy reprend l’indexation Python et l’étend aux tableaux multidimensionnels. Pour une matrice, les indices sont séparés par une virgule : tableau[ligne, colonne]. Dans un tableau de 3 lignes et 3 colonnes, tableau[1, 2] cible la troisième colonne de la deuxième ligne. Il est aussi possible d’extraire une zone avec des tranches, par exemple tableau[:, 1] pour récupérer la deuxième colonne.
Masques booléens dans NumPy
L’indexation booléenne sélectionne les valeurs qui répondent à une condition. L’expression tableau[tableau > 10] renvoie les éléments strictement supérieurs à 10. Cette opération ne cible plus une position précise : elle applique un filtrage à partir d’un masque booléen. Elle sert notamment à sélectionner les valeurs correspondant à une règle dans un tableau numérique.
loc[] et iloc[] dans pandas
Dans un DataFrame pandas, iloc[] travaille avec les positions entières, tandis que loc[] utilise les étiquettes de l’index et des colonnes. Si une ligne porte l’étiquette « client_42 », on la sélectionne avec df.loc[« client_42 »]. Pour récupérer la première ligne selon sa position, on utilise df.iloc[0].
Après l’appel à set_index(), une colonne peut devenir l’index du DataFrame. Il faut alors distinguer son étiquette métier, utilisée avec loc[], de sa position numérique, utilisée avec iloc[]. Cette distinction évite de confondre la valeur affichée comme index avec le rang réel de la ligne dans le tableau.
- Lire une position : l’indexation commence à zéro - 7 octobre 2026
- Local WP crée un WordPress local pour tester sans toucher à votre site en ligne - 6 octobre 2026
- Le software craftsmanship rend le code durable, au-delà des fonctionnalités livrées - 5 octobre 2026



