Comment trouver l'index d'un élément dans les listes Python
Publié: 2022-06-29Dans ce guide, vous apprendrez à trouver l'index d'un élément dans une liste Python, à la fois en utilisant des itérations simples et une méthode de liste intégrée index() .
Lorsque vous travaillez avec des listes Python, vous devrez peut-être connaître l'index auquel un élément particulier se produit. Vous pouvez le faire en :
- Boucler dans la liste et vérifier si l'élément à l'index actuel est égal à la valeur particulière
- Utilisation de la méthode de liste intégrée
index()
Vous apprendrez les deux éléments ci-dessus dans ce didacticiel. Commençons.
Listes Python, revisitées
En Python, une liste est une collection d'éléments, de types de données identiques ou différents. Ils sont mutables ; vous pouvez les modifier sur place sans avoir à créer une nouvelle liste.
Considérons cet exemple de fruits
: une liste de 5 fruits différents.
fruits = ["apple","mango","strawberry","pomegranate","melon"]
Vous pouvez obtenir la longueur de n'importe quel objet Python en utilisant la fonction intégrée len()
. Vous pouvez donc appeler la fonction len()
avec l'objet liste ( fruits
) comme argument pour obtenir sa longueur, comme indiqué ci-dessous.
len(fruits) # Output: 5
Nous utiliserons la liste des fruits
comme exemple courant dans ce didacticiel.
Indexation dans les listes Python
Python suit l'indexation zéro . Ainsi, dans tout itérable Python, le premier élément est à l'index 0, le deuxième élément est à l'index 1, et ainsi de suite. Si la longueur de l'itérable est k
, alors le dernier élément est à l'index k - 1
.
En Python, vous pouvez utiliser la fonction range() pour obtenir des indices lorsque vous parcourez les itérables.
Note : Lorsque vous parcourez
range(k)
, vous obtenez les indices 0,1,2,…,(k-1). Ainsi, en définissantk = len(list)
, vous pouvez obtenir la liste de tous les indices valides.
La cellule de code suivante explique cela.
for i in range(len(fruits)): print(f"i:{i}, fruit[{i}] is {fruits[i]}") # Output i:0, fruit[0] is apple i:1, fruit[1] is mango i:2, fruit[2] is strawberry i:3, fruit[3] is pomegranate i:4, fruit[4] is melon
Maintenant que nous avons couvert les bases des listes Python, apprenons à trouver l'index d'un élément dans une liste.

Rechercher l'index d'un élément de liste par itération à l'aide de boucles for
Considérons la liste des fruits
de la section précédente. Nous allons apprendre à trouver l'index d'un élément spécifique dans cette liste par itération à l'aide for
boucle for.
Utilisation de la fonction boucle et plage()
Fixons target
: la valeur que nous recherchons dans la liste.
Vous pouvez utiliser la fonction for
loop et range()
pour obtenir la liste des indices de 0
à len(fruits) - 1
.
- Parcourez la liste des fruits accédant à chaque index.
- Vérifie si l'élément à l'index courant i est égal à la cible.
- Si
True
, affiche que latarget
a été trouvée à l'indexi
.
fruits = ["apple","mango","strawberry","pomegranate","melon"] target = "mango" for i in range(len(fruits)): if fruits[i] == target: print(f"{target} found at index {i}") # Output mango found at index 1
Dans cet exemple, la chaîne cible 'mango'
apparaît exactement une fois (à l'index 1) dans la liste fruits
.
Cependant, la valeur cible apparaît parfois plusieurs fois ou n'apparaît pas du tout. Pour gérer ces cas, modifions la boucle ci-dessus et enveloppons le contenu dans une fonction appelée find_in_list
.
Comprendre la définition de la fonction
La fonction find_in_list
a deux paramètres :
-
target
: la valeur que vous recherchez, et -
py_list
: la liste Python dans laquelle vous recherchez.
def find_in_list(target,py_list): target_indices = [] for i in range(len(fruits)): if fruits[i] == target: target_indices.append(i) if target_indices == []: print("Sorry, target not found!") else: print(f"{target} is found at indices {target_indices}")
Dans le corps de la fonction, nous initialisons une liste vide target_indices
. Nous parcourons la liste et accédons aux éléments de la liste. Si la cible a été trouvée à un index particulier, nous ajoutons cet index à la liste target_indices
en utilisant la méthode append()
.
Remarque : En Python,
list.append(item)
ajouteitem
à la fin delist
.
- Si la cible n'est jamais trouvée, alors
target_indices
est une liste vide ; l'utilisateur est averti que la cible n'est pas présente dans la liste. - Si la cible se trouve à plus d'un index, alors
target_indices
contient tous ces index.
Ensuite, redéfinissons la liste des fruits
comme indiqué.
Cette fois, nous recherchons la chaîne target
'mango'
, qui apparaît deux fois, aux indices 1 et 4.
fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" find_in_list(target,fruits) # Output mango is found at indices [1, 4]
En appelant la fonction find_in_list
avec target
et fruits
comme arguments, nous voyons que les deux indices sont renvoyés.
target = "turnip" find_in_list(target,fruits) # Output Sorry, target not found!
Si vous essayez de rechercher 'turnip'
qui n'est pas présent dans la liste des fruits
, vous obtenez un message indiquant que la cible n'a pas été trouvée.
Utilisation de la boucle for et de la fonction enumerate()
En Python, vous pouvez utiliser la fonction enumerate()
pour accéder simultanément à l'index et aux éléments, sans avoir à utiliser la fonction range()
.
La cellule de code suivante montre comment vous pouvez utiliser la fonction enumerate()
pour obtenir à la fois les index et les éléments.
fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] for index,fruit in enumerate(fruits): print(f"Index {index}: {fruit}") # Output Index 0: apple Index 1: mango Index 2: strawberry Index 3: pomegranate Index 4: mango Index 5: melon
Maintenant, réécrivons la fonction Python pour trouver l'index des éléments dans la liste à l'aide de la fonction enumerate()
.

def find_in_list(target,py_list): target_indices = [] for index, fruit in enumerate(fruits): if fruit == target: target_indices.append(index) if target_indices == []: print("Sorry, target not found!") else: print(f"{target} is found at indices {target_indices}")
Comme pour la section précédente, vous pouvez maintenant appeler la fonction find_in_list
avec des arguments valides.
Vous pouvez traduire la définition de fonction ci-dessus en une compréhension de liste équivalente et nous le ferons dans la section suivante.
Rechercher l'index d'un élément de liste par itération à l'aide de la compréhension de liste
Les compréhensions de liste en Python vous permettent de créer des listes à partir de listes existantes en fonction de certaines conditions. Voici la construction générale :
new_list = [<output> for <items in existing iterables> if <condition is true>]
La figure ci-dessous décrit comment identifier les éléments de compréhension de liste ; en utilisant cela, vous pouvez convertir la fonction find_in_list
en une compréhension de liste.

En utilisant ce qui précède, l'expression de compréhension de liste pour créer des index cibles est la suivante.
target_indices = [index for index,fruit in enumerate(fruits) if fruit==target]
Comme exercice, vous pouvez essayer d'exécuter l'extrait de code ci-dessus pour quelques autres exemples.
Rechercher l'index d'un élément de liste à l'aide de la méthode index ()
Pour trouver l'index d'un élément dans une liste Python, vous pouvez également utiliser la méthode intégrée .index()
. Voici la syntaxe générale :
list.index(value,start,end)
Analyse de la méthode ci-dessus :
-
value
est la valeur cible que vous recherchez. -
start
etend
sont des arguments positionnels facultatifs ; vous pouvez les utiliser pour rechercher trouver l'index d'un élément dans la tranche de liste commençant austart
et s'étendant jusqu'à laend - 1
.
Remarque : La méthode .index() renvoie uniquement l'index de la première occurrence de
value
danslist
. Même lorsque vous trouvez l'index d'un élément dans une tranche de liste [start: end-1] , cette méthode ne renvoie que l'index correspondant à la première occurrence de l'élément.
Reprenons notre exemple pour comprendre le fonctionnement de la méthode .index()
.
fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" fruits.index(target) 1
Même s'il y a deux occurrences de 'mango'
dans la liste des fruits
, vous pouvez voir que seul l'index de la première occurrence a été renvoyé.
Pour obtenir l'index de la deuxième occurrence de mangue, nous pouvons effectuer une recherche dans la tranche de liste commençant à l'index 2 et s'étendant jusqu'à l'index 5, comme indiqué ci-dessous.
fruits.index(target,2,5) 4
Comment gérer les erreurs de valeur en Python
Voyons maintenant ce qui se passe si vous essayez de trouver l'index d'un élément qui n'est pas présent dans la liste, disons, 'carrot'
.
target = "carrot" fruits.index(target) # Output --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-17-81bd454e44f7> in <module>() 1 target = "carrot" 2 ----> 3 fruits.index(target) ValueError: 'carrot' is not in list
Comme on le voit dans la cellule de code ci-dessus, cela génère une ValueError. En Python, vous pouvez gérer cela comme une exception en utilisant les blocs try
et except
.
La syntaxe générale pour utiliser try-except
est la suivante.
try: # to do this except <ErrorType>: # do this to handle <ErrorType> as exception
En utilisant les blocs try-except ci-dessus, nous pouvons gérer ValueError comme une exception.
target = "carrot" try: fruits.index(target) except ValueError: print(f"Sorry, could not find {target} in list") # Output Sorry, could not find carrot in list
Le code ci-dessus fait ce qui suit :
- Si la cible est présente dans la liste, elle retourne l'index de la cible.
- Si la cible n'est pas présente, elle gère ValueError comme une exception et imprime le message d'erreur.
Résumé
Voici un résumé des différentes méthodes que vous avez apprises pour trouver l'index d'un élément dans une liste Python.
- Vous pouvez utiliser la boucle for de Python et la fonction range() pour obtenir les éléments et leurs indices respectifs. Vérifiez si les éléments des indices correspondent à la cible.
- Vous pouvez également utiliser la fonction enumerate() pour accéder simultanément à l'élément et à l'index.
- Vous pouvez utiliser les deux méthodes ci-dessus dans une expression de compréhension de liste.
- Pour trouver l'index d'un élément dans une liste, vous pouvez également utiliser la méthode intégrée .index() .
- list.index(value) renvoie l'index de la première occurrence de value dans list . Si la valeur n'est pas présente, elle lève une ValueError .
- Vous pouvez rechercher dans une certaine tranche de la liste en utilisant list.index(value, start, end) pour rechercher l'occurrence d'une valeur dans la tranche de liste [start:end-1] .
Ensuite, apprenez à trier un dictionnaire Python par clé ou par valeur. Bonne programmation Python !