Gostaria de indexar uma lista com outra lista como esta
L = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Idx = [0, 3, 7]
T = L[ Idx ]
e T deve acabar sendo uma lista contendo ['a', 'd', 'h'].
Existe uma maneira melhor do que
T = []
for i in Idx:
T.append(L[i])
print T
# Gives result ['a', 'd', 'h']
Se você estiver usando numpy, poderá executar fatias estendidas assim:
... e provavelmente é muito mais rápido (se o desempenho for uma preocupação suficiente para se preocupar com a importação numpy)
fonte
Uma abordagem funcional:
fonte
b
contiver apenas um item.fonte
Como eu não estava satisfeito com nenhuma dessas abordagens, criei uma
Flexlist
classe que permite a indexação flexível, seja por número inteiro, fatia ou lista de índices:Que, por exemplo, você usaria como:
fonte
existing_list = Flexlist(existing_list)
e nós temos a funcionalidade necessária sem quebrar nenhum códigoEu usaria um
Dict add
desejadokeys
paraindex
fonte
Você também pode usar o
__getitem__
método combinado commap
o seguinte:fonte