Beim Durchlaufen einer Liste in Python mithilfe einer for-Schleife können Benutzer auf eine unerwartete Unfähigkeit stoßen, ihre Elemente zu ändern, ohne Listenverständnisse anzuwenden.
Der Kern des Problems liegt im Verhalten von das for i in li-Schleifenkonstrukt. Intern iteriert es wie folgt:
for idx in range(len(li)): i = li[idx] i = 'foo'
Wie zu sehen ist, wird mir zunächst eine Referenz auf ein Element in der Liste zugewiesen. Jede nachfolgende Änderung an i wirkt sich nur auf die lokale Variable aus, nicht auf das Listenelement selbst.
Um dieses Problem zu lösen, kann man entweder Listenverständnisse nutzen:
li = ["foo" for i in li]
Oder durchlaufen Sie die Indizes explizit:
for idx in range(len(li)): li[idx] = 'foo'
Alternativ kann enumerate verwendet werden um den Vorgang zu vereinfachen:
for idx, item in enumerate(li): li[idx] = 'foo'
Das obige ist der detaillierte Inhalt vonWarum kann ich eine Python-Liste nicht direkt innerhalb einer „for'-Schleife ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!