Zugriff auf Elemente mit Offsets in Python's für .. in Loops

Ich habe mich mit Python ein bisschen verpasst, und ich habe gesammelt, dass es normalerweise besser ist (oder "pythonisch") zu benutzen

for x in SomeArray: 

Eher als die mehr C-Stil

 for i in range(0, len(SomeArray)): 

Ich sehe die Vorteile in diesem, vor allem sauberer Code, und die Fähigkeit, die schöne map() und verwandte Funktionen verwenden. Allerdings bin ich oft mit der Situation konfrontiert, wo ich gleichzeitig auf Elemente unterschiedlicher Offsets im Array zugreifen möchte. Zum Beispiel möchte ich das aktuelle Element dem Element zwei Schritte dahinter hinzufügen. Gibt es einen Weg, dies zu tun, ohne auf explizite Indizes zurückzugreifen?

2 Solutions collect form web for “Zugriff auf Elemente mit Offsets in Python's für .. in Loops”

Der Weg, dies in Python zu tun ist:

 for i, x in enumerate(SomeArray): print i, x 

Der enumerate erzeugt eine Folge von 2-Tupeln, die jeweils den Array-Index und das Element enthalten.

List indexing und zip () sind deine Freunde.

Hier ist meine Antwort für Ihre spezifischere Frage:

Ich möchte das aktuelle Element dem Element zwei Schritte hinter sich hinzufügen. Gibt es einen Weg, dies zu tun, ohne auf explizite Indizes zurückzugreifen?

 arr = range(10) [i+j for i,j in zip(arr[:-2], arr[2:])] 

Sie können auch das Modul numpy verwenden, wenn Sie beabsichtigen, auf numerischen Arrays zu arbeiten. Zum Beispiel kann der obige Code eleganter geschrieben werden als:

 import numpy narr = numpy.arange(10) narr[:-2] + narr[2:] 

Das Hinzufügen des n-ten Elements zum (n-2) -ten Element ist gleichbedeutend mit dem Hinzufügen des m-ten Elements zum (m + 2) -Element (für die mathematisch geneigten, die Substitution n-> m + 2). Der Bereich von n ist [2, len (arr)) und der Bereich von m ist [0, len (arr) -2). Beachten Sie die Klammern und Klammern. Die Elemente von 0 bis len (arr) -3 (Sie schließen die letzten beiden Elemente aus) wird als [: -2] indiziert, während Elemente von 2 bis len (arr) -1 (Sie schließen die ersten beiden Elemente aus) als [ 2:].

Ich gehe davon aus, dass Sie bereits Listenverständnisse kennen.

  • Wenn sonst statement nicht nach dem elif korrekt folgt [duplizieren]
  • Wenn in "Python" "while" oder "for" verwendet wird
  • Schleife rückwärts mit Indizes in Python?
  • Matplotlib: subplot
  • Was macht eine Schleife innerhalb einer Liste in Python?
  • Wie kann ich in Python die Effizienz für die Schleife machen?
  • Wie man ordnungsgemäß durchlaufen zwei Dateien Vergleich Strings in beiden Dateien gegeneinander
  • Trialhandler und Zeitmessung in der Psychopie
  • Python Count up & Down Schleife
  • Programm, um die n-ten Primzahl zu finden
  • Wie kann ich die Endlosschleife für den if und elif Teil stoppen?
  • Python ist die beste Programmiersprache der Welt.