http://docs.python.jp/3/tutorial/controlflow.html#for-statements
Wenn Sie eine iterierende Sequenz innerhalb einer Schleife ändern müssen (z. B. um ein ausgewähltes Element zu duplizieren), empfiehlt es sich, zuerst eine Kopie zu erstellen. Iterationen auf Sequenzen erstellen nicht implizit eine Kopie. Die Slice-Notation macht dies besonders nützlich:
>>> for w in words[:]: # Loop over a slice copy of the entire list.
... if len(w) > 6:
... words.insert(0, w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']
Im obigen Beispiel wird die Geschichte verwirrend, wenn sich die Liste selbst beim Drehen im Iterator ändert. Ich habe verstanden, dass es in solchen Fällen besser ist, die Slice-Notation zu verwenden (möglicherweise falsch).
Recommended Posts