Zugriff auf nicht aufeinanderfolgende Elemente in einer Liste oder einem string in python

Soweit ich kann sagen, dies ist nicht offiziell nicht möglich, aber gibt es einen "trick", um Zugriff auf beliebige nicht-sequentielle Elemente einer Liste durch aufschneiden?

Beispiel:

>>> L = range(0,101,10)
>>> L
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

Nun möchte ich in der Lage sein zu tun

a,b = L[2,5]

so, dass a == 20 und b == 50

Einen Weg neben den beiden Aussagen wäre etwas dummes wie:

a,b = L[2:6:3][:2]

Aber, dass nicht skaliert werden, bei der alle unregelmäßigen Abständen.

Vielleicht mit list comprehension mit den Indizes, die ich will?

[L[x] for x in [2,5]]

Ich würde gerne wissen, was es wird empfohlen, für dieses gemeinsame problem.

  • a,b = L[2],L[5]?
  • Das macht es einfach Aussehen, aber ich wollte wenden diese direkt an den Ausgang einer Funktion, die eine Liste zurückgibt, ohne einen Aufruf der Funktion zweimal oder re-Zuweisung, die eine variable und dann packte.
  • Ich bin geneigt zu sagen, dass Ihre Liste Einsicht ist das beste, was Sie tun können. Oder, wenn Sie nicht brauchen, eine aktuelle Liste, verwenden Sie einen generator-Ausdruck, wie in Shashank Gupta Antwort (obwohl, wenn Sie nur brauchen Sie es einmal, Sie könnten einfach die genexp inline, anstatt eine Funktion zurück).
InformationsquelleAutor beroe | 2013-10-02
Schreibe einen Kommentar