Python | Indices of numbers greater than K
Last Updated :
01 May, 2023
Many times we might have problem in which we need to find indices rather than the actual numbers and more often, the result is conditioned. First approach coming to mind can be a simple index function and get indices greater than particular number, but this approach fails in case of duplicate numbers. Let's discuss certain ways in which this problem can be successfully solved.
Method #1 : Using loop This problem can easily be solved using loop with a brute force approach in which we can just check for the index as we iterate and append it in a new list as we proceed forward.
Python3
# Python3 code to demonstrate
# index of matching element using loop
# initializing list
test_list = [12, 10, 18, 15, 8, 18]
# printing original list
print("The original list : " + str(test_list))
# using loop
# index of matching element
res = []
for idx in range(0, len(test_list)) :
if test_list[idx] > 10:
res.append(idx)
# print result
print("The list of indices greater than 10 : " + str(res))
Output : The original list : [12, 10, 18, 15, 8, 18]
The list of indices greater than 10 : [0, 2, 3, 5]
Time Complexity: O(n), where n is the length of the input list as we are iterating through the list.
Space Complexity: O(k), where k is the number of elements greater than 10 in the input list.
Method #2 : Using list comprehension + enumerate() The combination of these two function can also perform this particular task efficiently and in one line. The enumerate function is used to get element and its index simultaneously.
Python3
# Python3 code to demonstrate
# index of matching element
# using list comprehension + enumerate()
# initializing list
test_list = [12, 10, 18, 15, 8, 18]
# printing original list
print("The original list : " + str(test_list))
# using list comprehension + enumerate()
# index of matching element
res = [idx for idx, val in enumerate(test_list) if val > 10]
# print result
print("The list of indices greater than 10 : " + str(res))
Output : The original list : [12, 10, 18, 15, 8, 18]
The list of indices greater than 10 : [0, 2, 3, 5]
Method #3 : Using filter + lambda
One approach to finding the indices of numbers greater than a certain value K in a list is to use the filter() function and a lambda function.
The filter() function takes a function and an iterable as arguments, and returns an iterator that generates the elements of the iterable for which the function returns True. The lambda function is used to define a small anonymous function that returns a boolean value indicating whether an element is greater than K.
Here is an example of how this can be implemented:
Python3
# initializing list
test_list = [12, 10, 18, 15, 8, 18]
# printing original list
print("The original list:", test_list)
# using filter() and lambda
# indices of numbers greater than 10
indices = list(filter(lambda x: test_list[x] > 10, range(len(test_list))))
# print result
print("The indices of numbers greater than 10:", indices)
#This code is contributed by Edula Vinay Kumar Reddy
OutputThe original list: [12, 10, 18, 15, 8, 18]
The indices of numbers greater than 10: [0, 2, 3, 5]
The time complexity of this approach is O(n), where n is the length of the test_list, because the filter() function iterates over the elements of the list once.
The space complexity is also O(n), because the indices list is created and grows by one element for each iteration of the filter() function.
Method 4: Using the NumPy library.
Step-by-step appraoch:
- Import the NumPy library.
- Convert the given list to a NumPy array using the np.array() function.
- Use the np.where() function to find the indices of numbers greater than 10 in the NumPy array.
- Convert the resulting tuple of indices to a list using the tolist() method.
- Print the final list of indices.
Python3
# importing numpy library
import numpy as np
# initializing list
test_list = [12, 10, 18, 15, 8, 18]
# printing original list
print("The original list:", test_list)
# using numpy and np.where()
# indices of numbers greater than 10
indices = np.where(np.array(test_list) > 10)[0].tolist()
# print result
print("The indices of numbers greater than 10:", indices)
OUTPUT :
The original list: [12, 10, 18, 15, 8, 18]
The indices of numbers greater than 10: [0, 2, 3, 5]
Time complexity: O(n), where n is the length of the given list.
Auxiliary space: O(n), as we are creating a NumPy array of size n.
Similar Reads
Python | Get the Index of first element greater than K
Python list operations are always desired to have shorthands as they are used in many places in development. Hence having knowledge of them always remains quite useful. Let's deals with finding one such utility of having index of first element greater than K by one-liner. There are various ways in w
6 min read
Python - Nth smallest Greater than K
This article offers various approaches to solve the problem of finding Nth smallest number in python list greater than a specific element K in python list. This basically provides all the approaches from naive to one-liners so that they can be used in programming whenever required. Method 1 : Naive
8 min read
Python - Average of digit greater than K
Given elements list, extract elements whose average of digit is greater than K. Input : test_list = [633, 719, 8382, 119, 327], K = 5 Output : [719, 8382] Explanation : (7 + 1 + 9) / 3 = 5.6 and (8 + 3 + 8 + 2) / 4 = 5.2 , both of which are greater than 5, hence returned. Input : test_list = [633, 7
5 min read
How to Get the Number of Elements in a Python List
In Python, lists are one of the most commonly used data structures to store an ordered collection of items.In this article, we'll learn how to find the number of elements in a given list with different methods.ExampleInput: [1, 2, 3.5, geeks, for, geeks, -11]Output: 7Let's explore various ways to do
3 min read
Python - Create List of Size n
Creating a list of size n in Python can be done in several ways. The easiest and most efficient way to create a list of size n is by multiplying a list. This method works well if we want to fill the list with a default value, like 0 or None.Python# Size of the list n = 5 # Creating a list of size n
2 min read
Python - Consecutive Ranges of K greater than N
Given a list of elements, the task is to write a Python program to get all ranges of K greater than N. Input : [2, 6, 6, 6, 6, 5, 4, 6, 6, 8, 4, 6, 6, 6, 2, 6], K = 6, N = 3 Output : [(1, 4), (11, 13)] Explanation : 6 is consecutive from index 1 to 4, hence 1-4 in result. 7-8 also has 6, but its les
4 min read
Python | Find closest number to k in given list
Given a list of numbers and a variable K, where K is also a number, write a Python program to find the number in a list which is closest to the given number K. Examples: Input : lst = [3.64, 5.2, 9.42, 9.35, 8.5, 8], K = 9.1 Output : 9.35 Input : lst = [9, 11, 5, 3, 25, 18], K = 6 Output : 5 Method
5 min read
Python - Indices of atmost K elements in list
Many times we might have problem in which we need to find indices rather than the actual numbers and more often, the result is conditioned. First approach coming to mind can be a simple index function and get indices less than or equal than particular number, but this approach fails in case of dupli
7 min read
Python | K Value Indices Product
Usually, we require to find the index, in which the particular value is located. There are many method 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 list and compute their product. Lets discuss certain w
7 min read
Increment Numeric Strings by K - Python
Given the Strings list we have to increment numeric strings in a list by a given integer K. ( Note that strings that are not numeric remain unchanged ) For example: In the list ["gfg", "234", "is", "98", "123", "best", "4"] if K = 6 then result will be ["gfg", "240", "is", "104", "129", "best", "10"
4 min read