Trouver tous les indices d'un élément dans une liste en Python

Manav Narula 30 janvier 2023
  1. Utilisation de la boucle for pour trouver les indices de toutes les occurrences d’un élément
  2. Utiliser la fonction numpy.where() pour trouver les indices de toutes les occurrences d’un élément en Python
  3. Utilisez la fonction more_itertools.locate() pour trouver les indices de toutes les occurrences d’un élément
Trouver tous les indices d'un élément dans une liste en Python

Une liste est utilisée en Python pour stocker plusieurs éléments sous un seul nom. Chaque élément est accessible en fonction de sa position dans la liste. Un élément peut être présent à plusieurs endroits dans une liste.

Dans ce tutoriel, nous allons présenter comment trouver les indices de toutes les occurrences d’un élément spécifique dans une liste. Nous allons travailler avec la liste suivante et trouver tous les indices de l’élément 1.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

Utilisation de la boucle for pour trouver les indices de toutes les occurrences d’un élément

Nous pouvons facilement parcourir la liste et comparer chaque élément à l’élément requis et trouver ses indices. Nous pouvons stocker le résultat final dans une nouvelle liste. Dans l’exemple suivant, nous itérons sur la liste en utilisant la fonction range() :

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = []
x = 1  # The required element

for i in range(len(l1)):
    if l1[i] == x:
        pos.append(i)
print(pos)

Production :

[0, 2, 8]

Une façon plus efficace et plus compacte de mettre en œuvre le code ci-dessus est d’utiliser la compréhension de la liste ci-dessous.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = [i for i in range(len(l1)) if l1[i] == 1]
print(pos)

Production :

[0, 2, 8]

De même, nous pouvons également utiliser la fonction enumerate(), qui renvoie l’index et la valeur ensemble. Par exemple :

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = [i for i, x in enumerate(l1) if x == 1]
print(pos)

Production:

[0, 2, 8]

Utiliser la fonction numpy.where() pour trouver les indices de toutes les occurrences d’un élément en Python

La bibliothèque NumPy a la fonction where(), qui est utilisée pour retourner les indices d’un élément dans un tableau basé sur une condition quelconque. Pour cette méthode, nous devons passer la liste sous forme de tableau. Le résultat final est également dans un tableau. L’extrait de code suivant montre comment nous pouvons utiliser cette méthode :

import numpy as np

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = np.where(np.array(l1) == 1)[0]

print(pos)

Production :

[0 2 8]

Utilisez la fonction more_itertools.locate() pour trouver les indices de toutes les occurrences d’un élément

Le more_itertools est un module tiers et pratique. Il possède de nombreuses fonctions qui peuvent créer un code efficace et compact lorsqu’on travaille avec des itérables. La fonction locate() de ce module renvoie les indices des éléments qui sont True pour la condition. Elle renvoie un objet itertools. L’extrait de code suivant explique comment nous pouvons utiliser cette méthode :

from more_itertools import locate

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = list(locate(l1, lambda x: x == 1))

print(pos)

Production :

[0, 2, 8]

Nous utilisons la fonction list() pour nous assurer que le résultat final est sous la forme d’une liste.

Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Article connexe - Python List