Weird-for-loop-Anweisung [duplizieren]

8

Ich sah diese for-Schleife und ich habe nicht ganz verstanden, warum der letzte Druck 2 ist. Warum ist es nicht 3?

%Vor%

out:

%Vor%     
limitless 27.01.2016, 19:36
quelle

1 Antwort

20

Die for -Schleife verwendet a[-1] als Zielvariable und weist jeden Wert aus der Eingabe iterabel zu:

%Vor%

Die for -Schleife weist jedem Wert in der a -Liste dieses eine Ziel zu, a[-1] . Das passiert, wenn auch das letzte Element in derselben Liste ist.

So ändert sich die Liste bei jedem Schritt durch die Schleife:

%Vor%

Die vorletzte Iteration weist puts a[2] in a[3] (oder a[-2] in a[-1] ) zu, und deshalb sehen Sie, wenn die letzte Iteration stattfindet, 2 wieder .

Siehe for -Schleifengrammatik ; es benötigt eine generische target_list für das Zuweisungsziel, genau wie eine Zuweisungsanweisung . Sie sind nicht auf einfache Namen in Zuweisungen beschränkt und befinden sich auch nicht in einer for -Schleife.

    
Martijn Pieters 27.01.2016, 19:37
quelle

Tags und Links