Verwenden Sie operator.itemgetter()
:
Demo:
%Vor% Dies gibt ein Tupel zurück; Wird in eine Liste mit list(itemgetter(...)(lst))
umgewandelt, wenn dies eine Voraussetzung ist.
Beachten Sie, dass dies einem Schnittausdruck ( lst[start:stop]
) mit einer Reihe von Indizes anstelle eines Bereichs entspricht. es kann nicht als eine linksseitige Slice-Zuweisung ( lst[start:stop] = some_iterable
) verwendet werden.
Es ist einfach und unkompliziert mit einem Listenverständnis gemacht.
%Vor% Ich würde mit der operator.itemgetter()
-Methode gehen, die Martijn Pieters vorgeschlagen hat, aber hier ist ein anderer Weg (der Vollständigkeit halber)
Mit einem Python-Slice können Sie das Slice zum Ziel einer Aufgabe machen. Und die Python-Slicing-Syntax erlaubt keine Slices mit unregelmäßigen Mustern von Indizes. Wenn Sie also Ihre "benutzerdefinierte" Schicht zum Ziel einer Zuweisung machen wollen, ist das mit der Python-Slice-Syntax nicht möglich.
Wenn Ihre Anforderungen erfüllt sind, indem Sie eine Kopie der angegebenen Elemente erstellen, erfüllt operator.itemgetter()
Ihre Anforderungen. Wenn Sie eine Slice-Zuweisung benötigen, sind numpige Slices eine gute Option.