Usually, we require to find the index, in which the particular value is located. There are many methods to achieve that, using index(), etc. But sometimes require to find all the indices of a particular value in case it has multiple occurrences in the list. Let’s discuss certain ways to find indices of value in the given list of Python.
Ways to find indices of value in the list
Below are the methods that we will cover in this article:
- Using the Naive Method
- Using List Comprehension
- Using Enumerate() Function
- Using filter() Function
- Using Numpy Library
- Using a for Loop
- Using list.index() Method with a while Loop
Find the Index of an Item Using the Naive Method
We can achieve this task by iterating through the list and checking for that value and just appending the value index in a new list and printing that. This is the basic brute force method to achieve this task.
Python3
# initializing list test_list = [ 1 , 3 , 4 , 3 , 6 , 7 ] # printing initial list print ( "Original list : " + str (test_list)) # using naive method to find indices for 3 res_list = [] for i in range ( 0 , len (test_list)): if test_list[i] = = 3 : res_list.append(i) # printing resultant list print ( "New indices list : " + str (res_list)) |
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]
Time Complexity: O(n)
Auxiliary Space: O(n)
Find the Index of an Item Using List Comprehension
List comprehension is just the shorthand technique to achieve the brute force task, just uses lesser lines of codes to achieve the task and hence saves programmers time.
Python3
# initializing list test_list = [ 1 , 3 , 4 , 3 , 6 , 7 ] # printing initial list print ( "Original list : " + str (test_list)) # using list comprehension # to find indices for 3 res_list = [i for i in range ( len (test_list)) if test_list[i] = = 3 ] # printing resultant list print ( "New indices list : " + str (res_list)) |
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]
Time Complexity: O(n)
Auxiliary Space: O(n)
Find the Index of an Item Using Enumerate() Function
Using enumerate() we can achieve a similar task, this is a slightly faster technique than above and hence is recommended to be used over the list comprehension technique.
Python3
# initializing list test_list = [ 1 , 3 , 4 , 3 , 6 , 7 ] # printing initial list print ( "Original list : " + str (test_list)) # using enumerate() # to find indices for 3 res_list = [i for i, value in enumerate (test_list) if value = = 3 ] # printing resultant list print ( "New indices list : " + str (res_list)) |
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]
Time Complexity: O(n)
Auxiliary Space: O(n)
Find the Index of an Item Using filter() Function
This is yet another method that can be employed to achieve this particular task, filter() usually is able to perform the filtering tasks and hence can also be used in this situation to achieve this task.
Python3
# initializing list test_list = [ 1 , 3 , 4 , 3 , 6 , 7 ] # printing initial list print ( "Original list : " + str (test_list)) # using filter() to find indices for 3 res_list = list ( filter ( lambda x: test_list[x] = = 3 , range ( len (test_list)))) # printing resultant list print ( "New indices list : " + str (res_list)) |
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]
Time Complexity: O(n)
Auxiliary Space: O(n)
Find the Index of an Item Using numpy Library
This program uses the numpy library to convert a given list into an array, finds the indices of the given value in the array, and converts the resulting numpy array back to a list. Finally, it prints the list of indices.
Python3
import numpy as np test_list = [ 1 , 3 , 4 , 3 , 6 , 7 ] # convert the list to a numpy array test_array = np.array(test_list) # find the indices of the value 3 in the array res_array = np.where(test_array = = 3 )[ 0 ] # convert the numpy array back to a list res_list = list (res_array) # printing resultant list print ( "New indices list : " + str (res_list)) |
OUTPUT:
New indices list : [1, 3]
Time complexity: O(n), where n is the length of the input list.
Auxiliary space: O(n), because it creates a new numpy array with the same length as the input list.
Find the Index of an Item Using a for Loop
Initialize an empty list called “res_list” to store the indices of the target values.Iterate through each element in the input list “test_list” using a for loop.If the current element matches the target value, append its index to the “res_list”.After the loop is finished, return the “res_list” as the output.
Python3
# initializing list test_list = [ 1 , 3 , 4 , 3 , 6 , 7 ] # printing initial list print ( "Original list: " + str (test_list)) # using a for loop to find indices for 3 res_list = [] for i in range ( len (test_list)): if test_list[i] = = 3 : res_list.append(i) # printing resultant list print ( "New indices list: " + str (res_list)) |
Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]
Time complexity: O(n), where n is the length of the input list “test_list”.
Auxiliary space: O(k), where k is the number of occurrences of the target value.
Find the Index of an Item Using list.index() Method with a while Loop
Initialize an empty list indexes to store the indices of the given value.Initialize a variable i to -1.Run a while loop that continues until the break statement is encountered.Inside the while loop, use the list.index() method to find the index of the given value in the list starting from index i + 1.If the index is found, append it to the indexes list and update the value of i to the index found.If the index is not found, break the while loop.Print the indexes list.
Python3
# initializing list my_list = [ 1 , 3 , 4 , 3 , 6 , 7 ] # printing initial list print ( "Original list : " + str (my_list)) # using list.index() method with a while loop to find indices for 3 indexes = [] i = - 1 while True : try : i = my_list.index( 3 , i + 1 ) indexes.append(i) except ValueError: break print ( "New indices list : " + str (indexes)) |
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]
Time Complexity: O(n),The list.index() method has a time complexity of O(n) in the worst case because it needs to iterate through the list to find the index of the given value.The while loop also has a time complexity of O(n) in the worst case because it needs to iterate through the list to find all occurrences of the given value.
Auxiliary Space: O(1),The space used by the indexes list and i variable is constant and does not depend on the size of the input list, so the auxiliary space complexity is O(1).