2009-04-07 14 views
20

Estoy seguro de que hay una buena manera de hacerlo en Python, pero soy bastante nuevo en el lenguaje, ¡así que perdónenme si es fácil!Elegir elementos de una lista de Python que tienen índices específicos

Tengo una lista, y me gustaría seleccionar ciertos valores de esa lista. Los valores que quiero elegir son aquellos cuyos índices en la lista se especifican en otra lista.

Por ejemplo:

indexes = [2, 4, 5] 
main_list = [0, 1, 9, 3, 2, 6, 1, 9, 8] 

la salida sería:

[9, 2, 6] 

(es decir, los elementos con índices de 2, 4 y 5 de main_list).

Tengo la sensación de que esto debería ser posible usando algo así como listas de comprensión, pero no puedo resolverlo (en particular, no puedo entender cómo acceder al índice de un elemento cuando uso una lista de comprensión) .

Respuesta

67
[main_list[x] for x in indexes] 

Esto devolverá una lista de los objetos, usando una lista por comprensión.

+1

ahora ESTO es elegante. +1 –

+1

Las comprensiones de listas son geniales y fáciles de leer. A menudo resultan ser más rápidos que iterar, también. –

+0

Esto es realmente bueno. ¡Exactamente el tipo de cosa que quería, sin darme cuenta! – Ben

2
t = [] 
for i in indexes: 
    t.append(main_list[i]) 
return t 
+0

Si bien esto es menos elegante que una lista de comprensión, me gusta más como una respuesta para alguien completamente nuevo en Python. –

1

Creo que la solución de Yuval A es bastante clara y simple. Pero si realmente quieres una lista de una línea de comprensión:

[e for i, e in enumerate(main_list) if i in indexes] 
+0

En realidad, esto es mucho más elegante :) Aunque un poco menos legible –

+0

¡Ah! Ese es el tipo de cosas en las que estaba pensando. ¡Muy aseado! – Ben

1
map(lambda x:main_list[x],indexes) 
Cuestiones relacionadas