Ich möchte eine Liste mit einer anderen Liste wie dieser indizieren
L = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Idx = [0, 3, 7]
T = L[ Idx ]
und T sollte eine Liste sein, die ['a', 'd', 'h'] enthält.
Gibt es einen besseren Weg als
T = []
for i in Idx:
T.append(L[i])
print T
# Gives result ['a', 'd', 'h']
Wenn Sie Numpy verwenden, können Sie das erweiterte Schneiden folgendermaßen durchführen:
... und ist wahrscheinlich viel schneller (wenn die Leistung ausreicht, um sich um den Numpy-Import zu kümmern)
quelle
Ein funktionaler Ansatz:
quelle
b
nur ein Element enthalten ist.quelle
Ich war mit keinem dieser Ansätze zufrieden und habe eine
Flexlist
Klasse entwickelt, die eine flexible Indizierung ermöglicht, entweder nach Ganzzahl, Slice oder Indexliste:Was Sie für Ihr Beispiel verwenden würden als:
quelle
existing_list = Flexlist(existing_list)
und wir haben die erforderliche Funktionalität, ohne Code zuIch würde eine Verwendung
Dict add
gewünschtkeys
zuindex
quelle
Sie können die
__getitem__
Methode auchmap
wie folgt kombinieren :quelle