Accéder au contenu principal

La méthode index() de Python expliquée avec des exemples

Apprenez à utiliser la fonction index() de Python pour trouver la position des éléments dans les listes.
Actualisé 28 mars 2025  · 6 min de lecture

En Python, une structure de données vous aide à organiser et à stocker des données de manière efficace. Une structure courante et polyvalente est une liste, qui peut contenir différents types de données dans un ordre spécifique. Python propose également de nombreuses fonctions ou méthodes pour travailler avec des listes.

Dans ce tutoriel, vous apprendrez à connaître la fonction Python index(). La méthode index() recherche un élément dans la liste et renvoie sa position/index. Tout d'abord, ce tutoriel vous présentera les listes, puis vous verrez quelques exemples simples de l'utilisation de la fonction index().

Pour exécuter facilement vous-même tous les exemples de code de ce tutoriel, vous pouvez créer gratuitement un classeur DataLab dans lequel Python est préinstallé et qui contient tous les exemples de code.

Qu'est-ce que l'indexation en Python ?

En Python, l'indexation désigne le processus d'accès à un élément spécifique d'une séquence, telle qu'une chaîne ou une liste, à l'aide de sa position ou de son numéro d'index. En Python, l'indexation commence à 0, ce qui signifie que le premier élément d'une séquence a un index de 0, le deuxième élément a un index de 1, et ainsi de suite. Par exemple, si nous avons une chaîne de caractères "Hello", nous pouvons accéder à la première lettre "H" en utilisant son index 0 en utilisant la notation entre crochets : string[0].

La fonction intégrée index() de Python est un outil utile pour trouver l'indice d'un élément spécifique dans une séquence. Cette fonction prend un argument représentant la valeur à rechercher et renvoie l'index de la première occurrence de cette valeur dans la séquence.

Si la valeur n'est pas trouvée dans la séquence, la fonction lève une ValueError. Par exemple, si nous avons une liste [1, 2, 3, 4, 5], nous pouvons trouver l'index de la valeur 3 en appelant list.index(3), ce qui renverra la valeur 2 (puisque 3 est le troisième élément de la liste et que l'indexation commence à 0).

La fonction index() est un outil puissant en Python, car elle simplifie le processus de recherche de l'indice d'un élément dans une séquence, en éliminant la nécessité d'écrire des boucles ou des instructions conditionnelles. Cette fonction est particulièrement utile lorsque vous travaillez avec de grands ensembles de données ou des structures complexes, où la recherche manuelle peut prendre beaucoup de temps et être source d'erreurs.

Apprenez Python à partir de zéro

Maîtrisez Python pour la science des données et acquérez des compétences recherchées.
Commencez à apprendre gratuitement

Qu'est-ce que la fonction index() ?

La méthode index() renvoie l'indice le plus bas de la liste où figure l'élément recherché.

Essayons-le :

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 3
list_numbers.index(element)
2

Si un élément qui n'est pas présent est recherché, il renvoie un ValueError.

list_numbers = [4, 5, 6, 7, 8, 9, 10]
element = 3 # Not in the list
list_numbers.index(element) # Throws a ValueError
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-35-6a006c988b06> in <module>()
      1 list_numbers = [4, 5, 6, 7, 8, 9, 10]
      2 element = 3 # Not in the list
----> 3 list_numbers.index(element) # Throws a ValueError


ValueError: 3 is not in list

Travailler avec des cordes

Essayons avec des éléments de chaîne :

list_numbers = [1, 'two', 3, 4, 5, 6, 7, 8, 9, 10]
element = 'two'
list_numbers.index(element)
1

Note : Lors de la recherche de chaînes de caractères, index() tient compte des majuscules et des minuscules. Par exemple, l'adresse 'Hello'.index('h') suscitera l'adresse ValueError.

Trouver la première occurrence

Si vous avez plus d'une instance d'un élément, index() vous donnera la première position où l'élément apparaît.

list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
element = 3
list_numbers.index(element)
0

La position renvoyée est 0, car 3 apparaît pour la première fois en première position ou au 0e indice dans Python.

Voici ce qui se passe en interne : L'index parcourt toutes les valeurs à partir de la première position (0e index), à la recherche de l'élément que vous recherchez. Lorsqu'il trouve la valeur, il renvoie la position et quitte le système. Toutefois, cette méthode n'est pas très efficace lorsque vous parcourez une grande liste et que vous avez besoin de connaître la position d'un élément situé à la fin de la liste.

Utilisation des paramètres de démarrage et d'arrêt

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
list_numbers.index(element, 5, 8)
6

La syntaxe est donc : list_name.index(element, start, stop).

Ici, les valeurs start et stop sont facultatives. En fait, ne l'utilisez que si vous êtes parfaitement sûr de la portée ; sinon, vous obtiendrez ValueError, comme indiqué ci-dessous.

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
list_numbers.index(element, 1, 5)
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-39-b96f4b5e51d5> in <module>()
      1 list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      2 element = 7
----> 3 list_numbers.index(element, 1, 5)


ValueError: 7 is not in list

Recherche de toutes les occurrences

Comme index() ne renvoie que la première correspondance à un objet, vous pouvez utiliser la compréhension de liste ou l'expression de générateur si vous avez besoin des positions d'autres correspondances dans la liste. Voici comment :

list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
[i for i, n in enumerate(list_numbers) if n == 3] # List comprehension
[0, 3, 4, 8]
list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
g = (i for i, n in enumerate(list_numbers) if n == 3) # Generator expression
print("Generators store values, the first value here is:", next(g), ". Then the next is:", next(g), "followed by ", next(g),"and finally ", next(g))
Generators store values, the first value here is: 0. Then the next is: 3 followed by  4 and finally  8

Les générateurs sont peu gourmands en mémoire car ils produisent les éléments un par un au lieu de stocker tous les résultats comme le font les compilations de listes.

Réflexions finales

Félicitations, vous venez d'apprendre l'existence de la fonction index() en Python ! Vous avez vu comment il peut vous aider à travailler avec des listes. Vous avez également été initié à de nouveaux concepts. Pour en savoir plus sur la compréhension des listes, consultez le tutoriel de DataCamp sur la compréhension des listes en Python. Le tutoriel Python Iterator de DataCamp en dit plus sur les générateurs et les expressions de générateurs.

Obtenez une certification dans le rôle de Data Scientist de vos rêves

Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.

Obtenez votre certification
Timeline mobile.png

Sejal Jaiswal's photo
Author
Sejal Jaiswal
LinkedIn

J'ai travaillé dans différents secteurs d'activité et j'ai porté plusieurs casquettes : développeur de logiciels, chercheur en apprentissage automatique, scientifique des données, chef de produit. Mais au fond, je suis un programmeur qui aime apprendre et partager ses connaissances !

FAQ

Que se passe-t-il si plusieurs valeurs correspondent à l'élément que je recherche ?

La méthode index() ne renvoie que l'index de la première occurrence de l'élément correspondant. Si vous avez besoin de toutes les positions, utilisez une liste de compréhension avec enumerate().

Puis-je utiliser index() avec des tuples ou des chaînes ?

Oui ! La méthode index() fonctionne avec n'importe quel type de séquence, y compris les tuples et les chaînes :

my_tuple = (1, 2, 3, 2)
print(my_tuple.index(2))  # Output: 1

text = "hello world"
print(text.index('o'))    # Output: 4

Existe-t-il un moyen de gérer les ValueError de manière élégante ?

Oui, intégrez l'appel à index() dans un bloc try...except afin d'éviter les plantages si l'élément n'est pas trouvé :

my_list = [1, 2, 3]
try:
    print(my_list.index(4))
except ValueError:
    print("Element not found.")

Comment puis-je effectuer une recherche à partir de la fin de la liste ?

La méthode index() ne prend pas en charge la recherche inversée. Pour trouver la dernière occurrence, inversez la liste manuellement ou utilisez une compréhension :

my_list = [1, 2, 3, 2, 1]
last_index = len(my_list) - 1 - my_list[::-1].index(2)
print(last_index)  # Output: 3

Quelle est la différence entre index() et find() ?

La méthode find() est utilisée avec les chaînes de caractères et renvoie -1 au lieu de générer une erreur si la valeur n'est pas trouvée. Les listes n'ont pas de méthode find().

text = "hello"
print(text.find('e'))  # Output: 1
print(text.find('z'))  # Output: -1

Puis-je utiliser index() avec des listes imbriquées ?

Oui, mais uniquement au niveau supérieur. index() ne recherche pas dans les structures imbriquées.

nested_list = [[1, 2], [3, 4]]
print(nested_list.index([3, 4]))  # Output: 1
# This won't work: nested_list.index(3)

Qu'est-ce que l'erreur "list index out of range" ?

L'erreur "list index out of range" se produit lorsque vous essayez d'accéder à un index qui se trouve en dehors de la plage des index valides pour une liste. Par exemple, si une liste comporte 5 éléments, les indices valables sont compris entre 0 et 4. Si vous essayez d'accéder à un index supérieur ou égal à 5, vous obtiendrez cette erreur.

Pour éviter l'erreur "list index out of range", vous devez vous assurer que l'index auquel vous essayez d'accéder se trouve dans la plage des index valides pour la liste. Vous pouvez utiliser la fonction len() pour obtenir la longueur d'une liste et vérifier si un indice se trouve dans la plage des indices valides.

Qu'est-ce que l'erreur "list indices must be integers" ?

L'erreur "list indices must be integers" se produit lorsque vous essayez d'utiliser une valeur non entière comme index de liste. Par exemple, si vous essayez d'utiliser un nombre à virgule flottante ou une chaîne de caractères comme index de liste, vous obtiendrez cette erreur.

Pour éviter l'erreur "les indices de liste doivent être des entiers", vous devez vous assurer que vous utilisez une valeur entière comme indice de liste. Si vous devez utiliser une valeur non entière comme index, vous pouvez la convertir en entier à l'aide de la fonction int().

Sujets

Apprenez-en plus sur Python avec ces cours !

Certification disponible

Cours

Introduction à Python

4 hr
6.1M
Maîtrisez les bases de l'analyse de données avec Python en seulement quatre heures. Ce cours en ligne vous présentera l'interface Python et explorera les packages populaires.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow