Ich habe einen Python-Code, der die Liste während der Iteration ändert. Warum iteriert es 5 mal? Ich erwarte, dass es gemäß der neuen Liste iterieren sollte.Iterate Liste beim Zuweisen neuer Werte
Was ist "for i in l
" darunter? Warum hat es nichts mit I während der Iteration zu tun?
Wenn l
nicht geändert wird, warum nach der Schleife ist es leer?
cnt = 4
def print_list():
global cnt
l=[1, 2, 3, 4, 5]
for i in l: # why it iterates 5 times?
print "iteration ", i
l = range(1, cnt) # new assignment
print l
cnt-=1
print "after loop l is ", l # after loop, l is empty
drucken Ergebnis:
iteration 1
[1, 2, 3]
iteration 2
[1, 2]
iteration 3
[1]
iteration 4
[]
iteration 5
[]
after loop l is []
EDIT: aus den unten Antworten, ich verstehe jetzt:
- in Python,
l
nach Zuordnung zu einem anderen Objekt bezieht; - Originalobjekt, das sehr am Anfang von
l
verwiesen wird, wird nicht geändert.
"Ich habe einen Python-Code, der die Liste während der Iteration ändert" - *** tu das nicht ***. Außerdem ändern Sie die Liste nicht. Sie ändern die Variable "l", aber die Schleife beachtet das nicht mehr. – user2357112
Das Ändern der Liste in Python während der Iteration ist akzeptabel, wenn Sie die Größe nicht ändern und wissen, was Sie tun. – Rockybilly
@ user2357112, wenn ich nicht l ändere, warum nach der Schleife ist es leer? – pepero