During data analysis using python we come across many scenarios where we have to filter out elements from a list meeting certain criteria. In this article we will see how to get an element from a list which is greater than the element but smallest among all such elements which are greater than the given element.
With min
We design a for loop to go through each element of the list while meeting the general criteria of it’s value greater than k. Then for all such elements we apply the min function to get the minimum value.
Example
listA = [1,5,6, 7,11,14] # Original list print("Given list : ",listA) k = 8 # using min res = min(i for i in listA if i > k) # Result print("Missing elements from the list : \n" ,res)
Output
Running the above code gives us the following result −
Minimum element gerater than k : 11
With filter
Here we use the lambda function to get elements whose value is greater than K. Then apply the filter function to get only those values. Finally apply the min function to get the minimum value form this list.
Example
listA = [1,5,6, 7,11,14] # printing original list print("Given list : ",listA) k = 8 # using min res = min(filter(lambda i: i > k, listA)) # Result print("Minimum element gerater than k : \n" ,res)
Output
Running the above code gives us the following result −
Minimum element gerater than k : 11
With bisect_right
The bisect_right function is available in the bisect module. It bisects a list at a point greater than or equal to a certain parameter value supplied to it. In this example we take the list, sort it and then apply the bisect_right function. We get the index of the element which is greater than the required value.
Example
from bisect import bisect_right listA = [1,5,6, 7,11,14] # printing original list print("Given list : ",listA) k = 8 listA.sort() # Using bisect_right res = listA[bisect_right(listA, k)] # Result print("Minimum element gerater than k : \n" ,res)
Output
Running the above code gives us the following result −
Minimum element gerater than k : 11