Dans 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 pouvez avoir besoin de connaître l’index d’un élément particulier. Pour ce faire, vous pouvez
- En parcourant la liste en boucle et en vérifiant si l’élément situé à l’index actuel est égal à la valeur en question
- En utilisant la méthode de liste intégrée
index()
Vous apprendrez les deux méthodes ci-dessus dans ce tutoriel. Commençons.👩🏽💻
Les listes Python, revisitées
En Python, une liste est une collection d’éléments, de types de données identiques ou différents. Elles sont mutables; vous pouvez les modifier sur place sans avoir à créer une nouvelle liste.
Considérez l’exemple suivant fruits
: une liste de 5 fruits différents.
fruits = ["pomme", "mangue", "fraise", "grenade", "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)
# Résultat : 5
Nous utiliserons la liste fruits
comme exemple dans ce tutoriel.
Indexation dans les listes Python
Python utilise 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
, le dernier élément se trouve à l’indice k - 1
.
En Python, vous pouvez utiliser la fonction range() pour obtenir des indices lorsque vous effectuez une boucle dans les itérables.
Remarque: lorsque vous bouclez sur
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]}")
# Sortie
i:0, fruit[0] est une pomme
i:1, le fruit[1] est la mangue
i:2, le fruit[2] est la fraise
i:3, le fruit[3] est la grenade
i:4, fruit[4] est le melon
Maintenant que nous avons couvert les bases des listes Python, apprenons à trouver l’index d’un élément dans une liste.
Trouver l’index d’un élément d’une liste par itération en utilisant les boucles for
Reprenons la liste fruits de
la section précédente. Nous allons apprendre à trouver l’index d’un élément spécifique de cette liste par itération en utilisant la boucle for
.
Utilisation de la boucle for et de la fonction range()
Fixons la cible
: la valeur que nous recherchons dans la liste.
Vous pouvez utiliser la boucle for
et la fonction range()
pour obtenir la liste des indices compris entre 0
et len(fruits) - 1
.
- Bouclez la liste des fruits en accédant à chaque indice.
- Vérifiez si l’élément situé à l’index i est égal à la cible.
- Si c’est
le
cas, vous indiquez que lacible
a été trouvée à l’indexi
.
fruits = ["pomme", "mangue", "fraise", "grenade", "melon"]
cible = "mangue"
for i in range(len(fruits)) :
si fruits[i] == cible :
print(f"{cible} trouvée à l'index {i}")
# Sortie
mangue trouvée à l'indice 1
Dans cet exemple, la chaîne cible "mango"
apparaît exactement une fois (à l’indice 1) dans la liste fruits
.
Cependant, il arrive que la valeur cible apparaisse plus d’une fois ou n’apparaisse pas du tout. Pour traiter ces cas, modifions le bouclage ci-dessus et enveloppons son 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, etpy_list
: la liste Python dans laquelle vous effectuez votre recherche.
def find_in_list(target,py_list) :
target_indices = []
for i in range(len(fruits)) :
si fruits[i] == cible :
indices_cibles.append(i)
si indices_cibles == [] :
print("Désolé, la cible n'a pas été trouvée !")
else :
print(f"{cible} est trouvée aux indices {indices_cibles}")
Dans le corps de la fonction, nous initialisons une liste vide d’indices_cibles
. Nous parcourons la liste en boucle 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 à
l’aide de la méthode append()
.
Remarque: en Python,
list.append(item)
ajoute l’élément
à la fin de laliste
.
- Si la cible n’est jamais trouvée, la liste
target_indices
est vide ; l’utilisateur est informé que la cible n’est pas présente dans la liste. - Si la cible est trouvée à plus d’un index, alors
target_indices
contient tous ces index.
Redéfinissons ensuite la liste des fruits
comme indiqué.
Cette fois, nous recherchons la chaîne cible
"mangue"
, qui apparaît deux fois – aux indices 1 et 4.
fruits = ["pomme", "mangue", "fraise", "grenade", "mangue", "melon"]
cible = "mangue"
find_in_list(cible,fruits)
# Sortie
la mangue est trouvée aux indices [1, 4]
En appelant la fonction find_in_list
avec cible
et fruits
comme arguments, nous constatons que les deux indices sont renvoyés.
cible = "navet"
find_in_list(cible,fruits)
# Sortie
Désolé, la cible n'a pas été trouvée !
Si vous essayez de rechercher "navet"
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 devoir utiliser la fonction range()
.
La cellule de code suivante montre comment vous pouvez utiliser la fonction enumerate()
pour obtenir à la fois les indices et les éléments.
fruits = ["pomme", "mangue", "fraise", "grenade", "mangue", "melon"]
for index,fruit in enumerate(fruits) :
print(f "Index {index} : {fruit}")
# Sortie
Index 0 : pomme
Index 1 : mangue
Index 2 : fraise
Index 3 : grenade
Index 4 : mangue
Index 5 : melon
Réécrivons maintenant la fonction Python pour trouver l’index des éléments de 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("Désolé, la cible n'a pas été trouvée !")
else :
print(f"{cible} est trouvée aux indices {indices_cibles}")
Comme dans 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 la fonction ci-dessus en une compréhension de liste équivalente, ce que nous ferons dans la section suivante.
Trouver l’index d’un élément de liste par itération à l’aide d’une compréhension de liste
Lescompré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 = [ pour si ]
La figure ci-dessous décrit comment identifier les éléments d’une compréhension de liste ; grâce à 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 la compréhension de liste pour créer des indices cibles est la suivante.
target_indices = [index for index,fruit in enumerate(fruits) if fruit==target]
À titre d’exercice, vous pouvez essayer d’exécuter l’extrait de code ci-dessus pour quelques autres exemples.
Recherche de l’index d’un élément d’une 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 l’indice d’un élément dans la tranche de liste en commençant parstart
et en allant jusqu’àend - 1
.
Remarque: la méthode .index( ) renvoie uniquement l’indice de la première occurrence de la
valeur
dans laliste
. Même si vous recherchez l’indice d’un élément dans une tranche de liste [start : end-1], cette méthode ne renvoie que l’indice correspondant à la première occurrence de l’élément.
Reprenons notre exemple pour comprendre le fonctionnement de la méthode .index()
.
fruits = ["pomme", "mangue", "fraise", "grenade", "mangue", "melon"]
cible = "mangue"
fruits.index(cible)
1
Bien qu’il y ait deux occurrences de "mangue"
dans la liste des fruits
, vous pouvez voir que seul l’index de la première occurrence a été renvoyé.
Pour obtenir l’indice de la deuxième occurrence de mangue, nous pouvons effectuer une recherche dans la tranche de la liste en commençant par l’indice 2 et en allant jusqu’à l’indice 5, comme indiqué ci-dessous.
fruits.index(cible,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, par exemple "carotte"
.
cible = "carotte"
fruits.index(cible)
# Sortie
---------------------------------------------------------------------------
ValueError Traceback (dernier appel le plus récent)
dans ()
1 target = "carrot"
2
---->
3 fruits.index(target)
ValueError : "carrot" n'est pas dans la liste
Comme le montre la cellule de code ci-dessus, cela provoque une ValueError. En Python, vous pouvez traiter cette erreur comme une exception en utilisant les blocs try
et except
.
La syntaxe générale pour utiliser try-except
est la suivante.
try :
# pour faire ceci
except :
# faire ceci pour traiter comme une exception
En utilisant les blocs try-except ci-dessus, nous pouvons traiter ValueError comme une exception.
target = "carrot"
try :
fruits.index(target)
except ValueError :
print(f "Désolé, je n'ai pas trouvé {cible} dans la liste")
# Sortie
Désolé, je n'ai pas trouvé de carotte dans la liste
Le code ci-dessus effectue les opérations suivantes :
- Si la cible est présente dans la liste, il renvoie l’index de la cible.
- Si la cible n’est pas présente, il traite ValueError comme une exception et affiche 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 et la fonction range() de Python pour obtenir les éléments et leurs indices respectifs. Vérifiez si les éléments aux 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 à l’intérieur d’une expression de compréhension de liste.
- Pour trouver l’indice d’un élément dans une liste, vous pouvez également utiliser la méthode intégrée .index().
- list.index(value) renvoie l’indice de la première occurrence de la valeur dans la liste. Si la valeur n’est pas présente, cette méthode génère une erreur de type ValueError.
- Vous pouvez effectuer une recherche 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 en Python!