Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment trouver l'index d'un élément dans les listes Python

index de liste python
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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. indice().

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. Elles sont mutable; vous pouvez les modifier sur place sans avoir à créer une nouvelle liste.

Prenons cet exemple 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() fonction. Vous pouvez donc appeler le len() fonction avec l'objet liste (fruits) comme argument pour obtenir sa longueur, comme indiqué ci-dessous.

len(fruits)
# Output: 5

 Nous utiliserons le fruits list comme exemple courant dans ce didacticiel.

Indexation dans les listes Python

Python suit zéro indexation. 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.

Notes: Lorsque vous effectuez une boucle range(k), vous obtenez les indices 0,1,2,…,(k-1). Donc en fixant k = len(list), vous pouvez obtenir la liste de tous les index 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 de listes Python apprenons à trouver l'index d'un élément dans une liste.

python-trouver-dans-la-liste

Find Index of a List Item by Iteration Using for Loops

Considérons la liste 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 en utilisant for boucle.

Utilisation de la fonction boucle et plage()

Réparons target: la valeur que nous recherchons dans la liste.

Vous pouvez utiliser for boucle et range() fonction 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.
  • If True, imprimez que le target a été trouvé à l'index i.
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 recherchée, et
  • py_list: la liste Python dans laquelle vous effectuez une recherche.
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, on initialise 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 au target_indices liste à l'aide de la append() méthode.

Notes: En Python, list.append(item) ajoute item à la fin de list.

  • 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 indices.

Ensuite, redéfinissons le fruits liste comme indiqué.

Cette fois, nous recherchons le target un magnifique 'mango', qui se produit 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]

A l'appel de 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 le fruits liste, 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 le enumerate() fonction pour accéder à la fois à l'index et aux éléments simultanément, sans avoir à utiliser la range() la fonction.

La cellule de code suivante montre comment vous pouvez utiliser le enumerate() fonction pour obtenir à la fois les indices 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 en utilisant enumerate() la fonction.

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 le find_in_list fonction 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.

Find Index of a List Item by Iteration Using List Comprehension

Lister les compréhensions 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 ceci, vous pouvez convertir la fonction find_in_list à une compréhension de liste.

python-trouver-dans-la-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.

Find Index of a List Item Using the index() Method

Pour trouver l'index d'un élément dans une liste Python, vous pouvez également utiliser la fonction intégrée .index() méthode. 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 et end sont optionnel arguments de position ; vous pouvez les utiliser pour rechercher trouver l'index d'un élément dans la tranche de liste à partir de start et s'étendant jusqu'à end - 1.

Notes: Le .indice() retourne la méthode uniquement. l'indice de la première occurrence of value in list. Même lorsque vous trouvez l'index d'un élément dans une tranche de liste [début : fin-1], cette méthode renvoie uniquement l'index correspondant à la première occurrence de l'élément.

Reprenons notre exemple pour comprendre comment le .index() la méthode fonctionne.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"]
target = "mango"

fruits.index(target)
1

Même s'il y a deux occurrences de 'mango' dans le fruits liste, vous pouvez voir que seul l'index de la premier l'occurrence a été renvoyée.

Pour obtenir l'index de la deuxième occurrence de mango, 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 lance un Erreur de valeur. En Python, vous pouvez gérer cela comme une exception en utilisant le try et except Blocs.

La syntaxe générale à utiliser try-except est comme suit.

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 Erreur de valeur 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 Erreur de valeur comme exception et imprime le message d'erreur.

résumer

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 Python marquage boucle et intervalle() fonction 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 énumérer() fonction permettant d'accéder simultanément à la rubrique 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 fonction intégrée .indice() méthode.
  • liste.index(valeur) renvoie l'indice de la première occurrence de Plus-value in liste. Si la valeur n'est pas présente, elle lève un Erreur de valeur.
  • Vous pouvez rechercher dans une certaine tranche de la liste en utilisant list.index(valeur, début, fin) pour rechercher l'occurrence d'une valeur dans la tranche de liste [début : fin-1]

Ensuite, apprenez à trier un dictionnaire Python par clé ou par valeur. Heureux Programmation Python!

Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder