Cours
En Python, une structure de données vous aide à organiser et à stocker efficacement les données. Une structure courante et polyvalente est la liste, qui peut contenir différents types de données dans un ordre spécifique.. Python fournit également de nombreuses fonctions ou méthodes permettant de manipuler des listes d' s.
Dans ce tutoriel, vous apprendrez à utiliser la fonction Python index(). La méthode index() recherche un élément dans la liste et renvoie sa position/son index. Tout d'abord, ce tutoriel vous présentera les listes, puis vous verrez quelques exemples simples illustrant comment utiliser la fonction index().
Pour exécuter facilement tous les exemples de code de ce tutoriel, vous pouvez créer gratuitement un classeur DataLab qui comprend Python préinstallé et tous les exemples de code.
Qu'est-ce que l'indexation en Python ?
En Python, l'indexation désigne le processus qui consiste à accéder à 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 l'index 0, le deuxième élément a l'index 1, et ainsi de suite. Par exemple, si nous avons une chaîne "Bonjour", nous pouvons accéder à la première lettre "B" en utilisant son index 0 à l'aide de la notation entre crochets : string[0].
index() La fonction intégrée Python index est un outil utile pour trouver l'index 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 exception 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), qui renverra la valeur 2 (car 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'index d'un élément dans une séquence, éliminant ainsi la nécessité d'écrire des boucles ou des instructions conditionnelles. Cette fonction est particulièrement utile lorsque vous travaillez avec des ensembles de données volumineux ou des structures complexes, où la recherche manuelle peut être fastidieuse et source d'erreurs.
Apprenez Python à partir de zéro
Qu'est-ce que la fonction index() ?
La méthode index() renvoie l'index le plus bas dans la liste où l'élément recherché apparaît.
Essayons :
list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 3
print(list_numbers.index(element)) # 2
Si un élément qui n'est pas présent est recherché, une exception de type ValueError est levée.
list_numbers = [4, 5, 6, 7, 8, 9, 10]
element = 3 # Not in the list
print(list_numbers.index(element)) # Throws a ValueError
Utilisation des chaînes de caractères
Essayons avec des éléments de chaîne :
list_numbers = [1, 'two', 3, 4, 5, 6, 7, 8, 9, 10]
element = 'two'
print(list_numbers.index(element)) # 1
Remarque : Lors de la recherche de chaînes, l'index() e est sensible à la casse. Par exemple, 'Hello'.index('h') provoquera une exception ValueError.
Recherche de la première occurrence
Imaginez que vous ayez plusieurs instances d'un élément. Dans ce cas, index() vous indiquera 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
print(list_numbers.index(element)) # 0
La position renvoyée est 0, car 3 apparaît pour la première fois à la première position ou à l'index 0 dans Python.
Voici ce qui se passe en interne : L'index parcourt toutes les valeurs à partir de la première position (index 0) à la recherche de l'élément que vous recherchez. Lorsqu'il trouve la valeur, il renvoie la position et quitte le système. Cependant, cette méthode n'est pas très efficace lorsque vous parcourez une liste longue et que vous devez trouver la position d'un élément vers 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
print(list_numbers.index(element, 5, 8)) # 6
La syntaxe est donc la suivante : list_name.index(element, start, stop).
Ici, les valeurs start et stop sont facultatives. En réalité, veuillez l'utiliser uniquement lorsque vous êtes certain de la plage, sinon vous obtiendrez une erreur d'ValueError, comme illustré ci-dessous.
list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
print(list_numbers.index(element, 1, 5)) # Throws a ValueError
Recherche de toutes les occurrences
Étant donné que la fonction index() renvoie uniquement la première correspondance à un objet, vous pouvez utiliser la compréhension de liste ou une expression génératrice si vous avez besoin des positions de plusieurs correspondances dans la liste. Voici comment procéder :
list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
# List comprehension
print([i for i, n in enumerate(list_numbers) if n == 3]) # [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 efficaces en termes de mémoire, car ils produisent les éléments un par un au lieu de stocker tous les résultats comme le font les compréhensions de listes.
Dernières réflexions
Félicitations, vous venez d'apprendre la fonction d'index() en Python ! Vous avez vu comment cela peut vous aider à travailler avec des listes. Vous avez également découvert de nouveaux concepts. Pour en savoir plus sur la compréhension des listes, veuillez consulter le tutoriel DataCamp sur la compréhension des listes Python. Le tutoriel Python Iterator de DataCamp fournit davantage d'informations sur les générateurs et les expressions de générateur.
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.


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 !
Foire aux questions
Que se passe-t-il si plusieurs valeurs correspondent à l'élément que je recherche ?
La méthode index() renvoie uniquement l'index de la première occurrence de l'élément correspondant. Si vous avez besoin de toutes les positions, veuillez utiliser une compréhension de liste avec l'enumerate().
Puis-je utiliser index() avec des tuples ou des chaînes de caractères ?
Oui ! La méthode index() fonctionne sur tout type de séquence, y compris les tuples et les chaînes de caractères :
my_tuple = (1, 2, 3, 2)
print(my_tuple.index(2)) # Output: 1
text = "hello world"
print(text.index('o')) # Output: 4Existe-t-il un moyen de gérer ValueError de manière appropriée ?
Oui, veuillez encapsuler l'appel d'index() dans un bloc d'try...except afin d'éviter tout plantage 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 manuellement la liste 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
En quoi la fonction index() diffère-t-elle de la fonction find() ?
La méthode find() est utilisée avec les chaînes de caractères et renvoie une valeur nulle ( -1 ) au lieu de générer une erreur lorsque la valeur n'est pas trouvée. Les listes ne disposent pas d'une méthode d'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. La commande « index() » n'effectue pas de recherche à l'intérieur des 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 « index de liste hors limites » ?
L'erreur « index de liste hors limites » se produit lorsque vous essayez d'accéder à un index qui se trouve en dehors de la plage d'index valides pour une liste. Par exemple, si une liste comporte 5 éléments, les indices valides 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 « index de liste hors limites », veuillez 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 index se trouve dans la plage des indices valides.
Que signifie l'erreur « les indices de liste doivent être des nombres entiers » ?
L'erreur « Les indices de liste doivent être des nombres entiers » se produit lorsque vous essayez d'utiliser une valeur non entière comme indice 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 », veuillez 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 nombre entier à l'aide de la fonction int().
