While working with lists, you often encounter situations where you need to find specific values or perform statistical analysis based on these values. This could involve tasks such as identifying the minimum or maximum value in a list, determining the frequency of certain elements, calculating various statistical measures, etc. One of the common tasks among them is to find an index of the minimum value in the list using Python. Assuming that you’re already familiar with the list, its syntax, and its uses, we will discuss different methods by which we can access the index of the minimum value in the list.
To learn more about lists in Python, See Python List Tutorials
Given a list of n integers, find the index of elements whose value is minimum among all the elements in the list. We will discuss the following two cases:
Case 1: When there is only one minimum value in the list.
For example:
Input List: 23,56,32,89,21,44,51
Output: The index of minimum value is 5.
Case 2: When the minimum value is repeated multiple times in the list.
For example:
Input List: 32,23,56,32,89,41,32,23,44,51,23
Output : The minimum value occurs at 2nd, 8th and 11th indices.
Let’s discuss the above-mentioned cases using different approaches along with examples.
Methods for Finding the Index on Minimum Value in the List
Using the min() function along with the index() function, we can find the minimum value and then its index from the list. Another approach is to use min() function along with the for loop. In this guide, we will discuss these methods in detail.
1. Using min() and index() functions
The python has a built-in function of min() which returns the minimum value in the list. Then, pass this minimum value to the index() function which returns the index of the element. These two functions are used in combination to find the index of a minimum element in a single line code.
Given a list, find the index of a minimum element.
#function which returns the index of minimum value in the list
def get_minvalue(inputlist):
#get the minimum value in the list
min_value = min(inputlist)
#return the index of minimum value
min_index=list1.index(min_value)
return min_index
if __name__ == "__main__" :
#create and initialize a list
list1 = [23,56,32,89,21,44,51]
list2 = [32,23,56,32,89,41,32,23,44,51,23]
min_list1 = get_minvalue(list1)
print("Index of minimum value is ",min_list1)
min_list2 = get_minvalue(list2)
print("Index of minimum value is ",min_list2)
OUTPUT:
Index of minimum value is 4
Index of minimum value is 0
In the above example, there is only one minimum value in list1 whose index is returned. However, in list2, minimum value occurs more than once. But, the program returns index 0 only in the output. This is because, in the case of multiple occurrences of an item, the index() function returns the index of only the first occurrence. This approach works well for case 1 but fails to display all the indices in case of multiple occurrences.
2. Using Min() function with For loop
Another way is to use a combination of min() and for loop. This method has the advantage of being able to handle cases where there are multiple occurrences of the minimum value in the list. It returns all the indices associated with the minimum value in case of multiple occurrences of the same elements. Let’s see how it works.
First of all, get the minimum element using the min() function. Then, iterate over the list using for loop and store the indexes of all those positions whose value is equal to the minimum value. Let’s understand this through an example.
#function which returns the index of minimum value in the list
def get_minvalue(inputlist):
#get the minimum value in the list
min_value = min(inputlist)
#return the index of minimum value
min_index=[]
for i in range(0,len(inputlist)):
if min_value == inputlist[i]:
min_index.append(i)
return min_index
if __name__ == "__main__" :
#create and initialize a list
list1 = [23,56,32,89,21,44,51]
list2 = [32,23,56,32,89,41,32,23,44,51,23]
min_list1 = get_minvalue(list1)
print("Index of minimum value is ",min_list1)
min_list2 = get_minvalue(list2)
print("Index of minimum value is ",min_list2)
OUTPUT:
Index of minimum value is [4]
Index of minimum value is [1, 7, 10]
Now, the code has returned all the indices of the minimum value in the list2. In the above example, you can also use enumerate function in place of the range function. The results would be the same.
3. Using List Comprehension
This code can be further modified by using list comprehension which in turn reduces the length of code. Below is the implementation of the above code using list comprehension.
#function which returns the index of minimum value in the list
def get_minvalue(inputlist):
#get the minimum value in the list
min_value = min(inputlist)
#return the index of minimum value
res = [i for i,val in enumerate(inputlist) if val==min_value]
return res
if __name__ == "__main__" :
#create and initialize a list
list1 = [23,56,32,89,21,44,51]
list2 = [32,23,56,32,89,41,32,23,44,51,23]
min_list1 = get_minvalue(list1)
print("Indices of minimum value: ",min_list1)
min_list2 = get_minvalue(list2)
print("Indices of minimum value: ",min_list2)
OUTPUT:
Index of minimum value is [4]
Index of minimum value is [1, 7, 10]
The above code uses list comprehension and returns the same results as in the previous example.
Finding the index of a minimum value in a list might provide useful insights and aid in decision-making or problem-solving. The most common example is a route optimization problem where you have a list of distances or costs associated with different routes. Businesses can improve their logistics and transportation processes by identifying the index of minimal value. This value can then be used to determine the most efficient or economical route.
In this tutorial, we have discussed two different approaches to finding the indices of minimum values in the list along with their limitations. If you have any questions regarding this tutorial, let us know in the comments. Your feedback would be highly appreciated.