Python | Buscar elementos de una lista por índices

Dadas dos listas con elementos e índices, escriba un programa Python para encontrar elementos de la lista 1 en los índices presentes en la lista 2 .

Ejemplos:

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']

 
A continuación se muestran algunos enfoques Pythonic para realizar la tarea anterior.

Enfoque #1: Ingenuo (Lista de comprensión)

El primer enfoque para encontrar los elementos deseados es usar la comprensión de listas. Atravesamos ‘lst2’ y para cada i -ésimo elemento, generamos 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))
Producción:

[10, 30, 50]

 
Enfoque #2: Usar Pythonmap()

También podemos usar el map()método Python donde aplicamos la lst1.__getitem__ función en lst2 que regresa lst1[i] para cada elemento ‘i’ de 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))
Producción:

[10, 30, 50]

 
Enfoque #3: Usaritemgetter()

# 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))
Producción:

[10, 30, 50]

 
Enfoque #4: Usarnumpy

# 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))
Producción:

[10, 30, 50]

Publicación traducida automáticamente

Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *