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
b
contiene solo un elemento.fuente
No estaba contento con ninguno de estos enfoques, por lo que se me ocurrió una
Flexlist
clase 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 add
deseadokeys
paraindex
fuente
También puede usar el
__getitem__
método combinado conmap
lo siguiente:fuente