Skip to content
Related Articles

Related Articles

Python | Find elements of a list by indices
  • Last Updated : 18 Apr, 2019

Given two lists with elements and indices, write a Python program to find elements of list 1 at indices present in list 2.

Examples:

Input : lst1 = [10, 20, 30, 40, 50]
        lst2 = [0, 2, 4]
Output : [10, 30, 50]
Explanation: 
Output elements at indices 0, 2 and 4 i.e 10, 30 and 50 respectively. 

Input : lst1 = ['Hello', 'geeks', 'for', 'geeks']
        lst2 = [1, 2, 3]
Output : ['geeks', 'for', 'geeks']

 
Below are some Pythonic approaches to do the above task.

Approach #1 : Naive(List comprehension)

The first approach to find the desired elements is to use list comprehension. We traverse through ‘lst2’ and for each ith element, we output lst1[i].






# Python3 program to Find elements of a 
# list by indices present in another list
  
def findElements(lst1, lst2):
    return [lst1[i] for i in lst2]
              
# Driver code
lst1 = [10, 20, 30, 40, 50]
lst2 = [0, 2, 4]
print(findElements(lst1, lst2))
Output:
[10, 30, 50]

 
Approach #2 : Using Python map()

We can also use Python map() method where we apply lst1.__getitem__ function on lst2 which return lst1[i] for each element ‘i’ of lst2.




# Python3 program to Find elements of a 
# list by indices present in another list
  
def findElements(lst1, lst2):
    return list(map(lst1.__getitem__, lst2))
              
# Driver code
lst1 = [10, 20, 30, 40, 50]
lst2 = [0, 2, 4]
print(findElements(lst1, lst2))
Output:
[10, 30, 50]

 
Approach #3 : Using itemgetter()




# Python3 program to Find elements of a 
# list by indices present in another list
from operator import itemgetter 
  
def findElements(lst1, lst2):
    return list((itemgetter(*lst2)(lst1)))
              
# Driver code
lst1 = [10, 20, 30, 40, 50]
lst2 = [0, 2, 4]
print(findElements(lst1, lst2))
Output:
[10, 30, 50]

 
Approach #4 : Using numpy




# Python3 program to Find elements of a 
# list by indices present in another list
import numpy as np 
  
def findElements(lst1, lst2):
    return list(np.array(lst1)[lst2])
              
# Driver code
lst1 = [10, 20, 30, 40, 50]
lst2 = [0, 2, 4]
print(findElements(lst1, lst2))
Output:
[10, 30, 50]

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up
Recommended Articles
Page :