Zugriff auf Elemente mit Offsets in Pythons for .. in Schleifen

8

Ich habe mich ein bisschen mit Python beschäftigt, und ich habe festgestellt, dass es normalerweise besser ist (oder "pythonisch"),

zu verwenden %Vor%

anstelle des C-Stils

%Vor%

Ich sehe die Vorteile in diesem, hauptsächlich saubereren Code und die Möglichkeit, die netten map() und verwandte Funktionen zu verwenden. Ich stehe jedoch oft vor der Situation, dass ich gleichzeitig auf Elemente mit unterschiedlichen Offsets im Array zugreifen möchte. Ich möchte zum Beispiel das aktuelle Element dem Element zwei Schritte dahinter hinzufügen. Gibt es eine Möglichkeit, dies ohne explizite Indizes zu tun?

    
int3 15.08.2009, 12:00
quelle

2 Antworten

14

Die Vorgehensweise in Python ist:

%Vor%

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

    
Greg Hewgill 15.08.2009, 12:03
quelle
6

List indizierung und zip () sind deine Freunde.

Hier ist meine Antwort für Ihre spezifischere Frage:

  

Ich möchte vielleicht das aktuelle Element dem Element zwei Schritte dahinter hinzufügen. Gibt es eine Möglichkeit, dies ohne explizite Indizes zu tun?

%Vor%

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

%Vor%

Das Hinzufügen des n-ten Elements zum (n-2) -ten Element entspricht dem Hinzufügen des m-ten Elements zum (m + 2) -Element (für die mathematisch geneigte Ausführung haben wir die Substitution n- & gt; m + 2 durchgeführt). 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) werden als [: -2] indiziert, während Elemente von 2 bis len (arr) -1 (Sie schließen die ersten beiden Elemente aus) als [ 2:].

Ich nehme an, dass Sie Listenkompromittierungen bereits kennen.

    
ianalis 15.08.2009 14:43
quelle

Tags und Links