Find All the Indices of an Element in a List in Python

  1. Use of the for Loop to Find the Indices of All the Occurrences of an Element
  2. Use the numpy.where() Function to Find the Indices of All the Occurrences of an Element in Python
  3. Use the more_itertools.locate() Function to Find the Indices of All the Occurrences of an Element

A list is used in Python to store multiple elements under a single name. Each element can be accessed using its position in the list. An element can be present at multiple positions in a list.

In this tutorial, we will introduce how to find the indices of all the occurrences of a specific element in a list. We will work with the following list and find all the indices of the element 1.

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

Use of the for Loop to Find the Indices of All the Occurrences of an Element

We can easily iterate over the list and compare each element to the required element and find its indices. We can store the final result in a new list. In the following example, we iterate over the list using the range() function:

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)

Output:

[0, 2, 8]

A more efficient and compact way of implementing the above code is to use the list comprehension below.

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

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

Output:

[0, 2, 8]

Similarly, we can also use the enumerate() function, which returns the index and the value together. For example:

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

Output:

[0, 2, 8]

Use the numpy.where() Function to Find the Indices of All the Occurrences of an Element in Python

The numpy library has the where() function, which is used to return the indices of an element in an array based on some condition. For this method, we have to pass the list as an array. The final result is also in an array. The following code snippet shows how we can use this method:

import numpy as np

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

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

print(pos)

Output:

[0 2 8]

Use the more_itertools.locate() Function to Find the Indices of All the Occurrences of an Element

The more_itertools is a third party and handy module. It has many functions that can create efficient and compact code when working with iterables. The locate() function in this module returns the indices of the elements which are True for the condition. It returns an itertools object. The following code snippet explains how we can use this method:

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)

Output:

[0, 2, 8]

We use the list() function to ensure that the final result is in the form of a list.

Contribute
DelftStack is a collective effort contributed by software geeks like you. If you like the article and would like to contribute to DelftStack by writing paid articles, you can check the write for us page.

Related Article - Python List

  • Get the Average of a List in Python
  • Concatenate Two or Multiple Lists in Python