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))
[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))
[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))
[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))
[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