Wie unterscheidet der Bereich() in diesem Fall den Anruf?Wie funktioniert 'range()' intern?
Beispiel:
def ex():
list = [1,2,3,4]
for val in range(len(list)):
print(val)
break
for val in range(len(list)):
print(val)
break
Ausgang -
0
0
Kurz gesagt, meine Frage ist, warum nicht die Leistungsausbeute auf diese Weise?
0
1
Beim ersten Aufruf des Bereich() in dem 'ersten for-Schleife', wird der Anruf 'Bereich (len (list))', und in dem ersten Aufruf den Bereich() in der 'second for loop' ist der Aufruf 'range (len (list))', was dem zweiten Aufruf des Bereichs() in der 'first for loop' entspricht. Wie weiß Range(), ob der Aufruf von "Second for Loop" und nicht von "First for Loop" erfolgte?
'range()' mit 1 arg, gibt einen Iterator zurück, der bei 0 beginnt und inkrementiert bis 'arg'. Es wird nicht wiederholt von der ersten for-Schleife aufgerufen. Sie brechen dann aus der ersten Schleife aus und starten eine neue Schleife, die einen anderen Aufruf von 'range()' ausführt, der einen Iterator zurückgibt, der bei 0 beginnt. – AChampion
Warum würde es diese Ausgabe liefern? Loops beginnen nicht dort, wo der andere aufgehört hat, und Sie brechen bei der ersten Iteration. – Li357
Die Antwort (auf die Frage in Ihrem Titel) hängt davon ab, welche Version von Python Sie verwenden. Python 3 'range' unterscheidet sich von Python 2's. Auch - verwenden Sie nicht "list" als Kennung. Es überschreibt einen eingebauten Namen. –