Open In App
Related Articles

Python – Minimum element indices

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

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

# 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()

Python3

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:

  • Initialize an empty dictionary indices_dict.
  • Loop through the indices of my_list using a for loop.
  • For each index i, check if the value my_list[i] is already a key in indices_dict.
  • If my_list[i] is already a key in indices_dict, append i to the value list for that key.
  • If my_list[i] is not a key in indices_dict, add it as a key with its value as a list containing only i.
  • Find the minimum element of my_list using the min() function and store it in min_val.
  • Retrieve the indices of min_val from indices_dict and store them in min_indices.
  • Print min_indices.

Python3

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)



Last Updated : 17 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads