Rechercher l'index d'un élément dans une liste en Python

Rayven Esplanada 30 janvier 2023
  1. Utilisez la méthode List index() pour trouver l’index d’une liste en Python
  2. Utilisez numpy.where() pour trouver l’index d’une liste en Python
Rechercher l'index d'un élément dans une liste en Python

Ce didacticiel montrera comment trouver la position ou l’index d’un élément dans une liste Python.

Utilisez la méthode List index() pour trouver l’index d’une liste en Python

La liste Python a une méthode intégrée appelée index(), qui accepte un seul paramètre représentant la valeur à rechercher dans la liste existante. La fonction renvoie l’index de la première occurrence qu’elle trouve à partir de l’index 0 quel que soit le nombre de fois qu’elle apparaît dans la liste.

Par exemple, déclarez une liste avec une valeur répétitive de 20 et appelez la fonction index(20) et affichez ce qu’elle renvoie.

lst = [13, 4, 20, 15, 6, 20, 20]

print(lst.index(20))

Production:

2

La première occurrence de la valeur 20 trouvée dans le tableau lst était sur l’index 2, qui est le résultat de l’appel de fonction. Les autres éléments avec la même valeur sont ignorés car il a déjà trouvé une correspondance dans la liste.

Que se passe-t-il lorsqu’une valeur n’existe pas dans la liste donnée, et que l’on appelle index() en passant la valeur inexistante? Prenons ceci par exemple.

lst = [13, 4, 20, 15, 6, 20, 20]

print(lst.index(21))

Production:

ValueError: 21 is not in list

La fonction lèvera une erreur si l’index n’est pas trouvé dans la liste. Dans certains cas, cela peut être défavorable pour invoquer une erreur. Pour éviter cela, attrapez l’erreur avec un bloc try...except et faites-le de sorte que si l’index n’existe pas dans la liste, affectez-le à -1.

lst = [13, 4, 20, 15, 6, 20, 20]

try:
    ndx = lst.index(21)
except:
    ndx = -1

print(ndx)

Production:

-1

De cette façon, une erreur explicite n’aura pas à être invoquée et le programme pourra continuer à s’exécuter après l’opération.

Utilisez numpy.where() pour trouver l’index d’une liste en Python

Le module NumPy a une fonction prédéfinie appelée where() qui s’occupe de localiser plusieurs éléments dans une liste et accepte une condition.

Dans ce cas, nous utiliserons exclusivement where() pour localiser les indices d’une valeur donnée. Contrairement à la fonction intégrée index(), la fonction where() peut renvoyer une liste d’indices où se trouve la valeur si elle existe plus d’une fois dans une liste. Ceci est utile si vous avez besoin de toutes les occurrences de la valeur au lieu de seulement la première occurrence.

La première étape est de convertir une liste Python en un tableau NumPy. Pour ce faire, appelez la fonction np.array().

import numpy as np

lst = np.array(lst=[13, 4, 20, 15, 6, 20, 20])

Après avoir initialisé le tableau NumPy, il suffit de renseigner le premier paramètre de where(). Initialisez le premier paramètre comme lst == 20 pour localiser les indices de la liste donnée avec la valeur 20.

import numpy as np

lst = [13, 4, 20, 15, 6, 20, 20]

lst = np.array(lst)

result = np.where(lst == 20)

print(result)

Production:

(array([2, 5, 6]),)

Puisque NumPy traite principalement des matrices, la fonction where() renvoie un tuple de tableaux au lieu d’une seule liste. Si la sortie de la seule liste est préférée, alors appelez le premier index du résultat et sortez-le en utilisant print().

import numpy as np

lst = [13, 4, 20, 15, 6, 20, 20]

lst = np.array(lst)

result = np.where(lst == 20)

print(result[0])

Production:

[2 5 6]

Notez que les tableaux NumPy sont délimités par un seul espace au lieu des virgules normales.

En résumé, la fonction index() est le moyen le plus simple de trouver la position d’un élément dans une liste Python. Bien que cette fonction ne renvoie que l’index de la première occurrence de la valeur donnée.

Pour renvoyer plusieurs index si plusieurs instances de la valeur existent, alors vous pouvez choisir d’utiliser la fonction where() dans le module NumPy.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Article connexe - Python List