Me gustaría indexar una lista con otra lista como esta
L = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Idx = [0, 3, 7]
T = L[ Idx ]
y T debería terminar siendo una lista que contiene ['a', 'd', 'h'].
¿Hay una mejor manera que
T = []
for i in Idx:
T.append(L[i])
print T
# Gives result ['a', 'd', 'h']

Si está usando numpy, puede realizar un corte extendido así:
... y probablemente sea mucho más rápido (si el rendimiento es una preocupación suficiente para molestarse con la importación numpy)
fuente
Un enfoque funcional:
fuente
bcontiene solo un elemento.fuente
No estaba contento con ninguno de estos enfoques, por lo que se me ocurrió una
Flexlistclase que permite una indexación flexible, ya sea por entero, por segmento o por índice:Que, por ejemplo, usarías como:
fuente
existing_list = Flexlist(existing_list)y tenemos la funcionalidad requerida sin descifrar ningún códigoYo usaría un
Dict adddeseadokeysparaindexfuente
También puede usar el
__getitem__método combinado conmaplo siguiente:fuente