Open In App

Python – Minimum element indices

Sometimes, while working with Python lists, we can have a problem in which we intend to find the position of minimum element of list. This task is easy and discussed many times. But sometimes, we can have multiple minimum elements and hence multiple minimum positions. Let’s discuss a shorthand to achieve this task in this case. 

Method : Using min() + enumerate() + list comprehension In this method, the combination of above functions is used to perform this particular task. This is performed in two steps. In 1st, we acquire the minimum element and then access the list using list comprehension and corresponding element using enumerate and extract every element position equal to minimum element processed in step 1. 






# Python3 code to demonstrate working of
# Minimum element indices
# Using list comprehension + min() + enumerate()
 
# initializing list
test_list = [2, 4, 6, 8, 2, 2]
 
# printing list
print("The original list : " + str(test_list))
 
# Minimum element indices
# Using list comprehension + min() + enumerate()
temp = min(test_list)
res = [i for i, j in enumerate(test_list) if j == temp]
 
# Printing result
print("The Positions of minimum element : " + str(res))

Output : 
The original list : [2, 4, 6, 8, 2, 2]
The Positions of minimum element : [0, 4, 5]

Time Complexity: O(n), where n is the number of elements in the list “test_list”.
Auxiliary Space: O(n), where n is the number of elements in the list “test_list”.



Approach  : Using numpy.argmin()




import numpy as np
 
# initializing list
test_list = [2, 4, 6, 8, 2, 2]
 
# printing list
print("The original list : " + str(test_list))
   
# Minimum element indices
# Using numpy.argmin()
res = np.argwhere(test_list == np.amin(test_list)).flatten()
 
# Printing result
print("The Positions of minimum element : " + str(res))
#This code is contributed by Edula Vinay Kumar Reddy

output:

The original list : [2, 4, 6, 8, 2, 2]
The Positions of minimum element : [0 4 5]

Time complexity : O(n)
Auxiliary Space : O(1)

 Using a dictionary to keep track of the indices of each element, then finding the minimum element and its indices:

Approach:




my_list = [2, 4, 6, 8, 2, 2]
 
indices_dict = {}
for i in range(len(my_list)):
    if my_list[i] in indices_dict:
        indices_dict[my_list[i]].append(i)
    else:
        indices_dict[my_list[i]] = [i]
 
min_val = min(my_list)
min_indices = indices_dict[min_val]
 
print(min_indices)

Output
[0, 4, 5]

Time complexity: O(n)
Space complexity: O(n)


Article Tags :