http://docs.python.jp/3/tutorial/controlflow.html#for-statements
Si vous devez modifier une séquence itérative à l'intérieur d'une boucle (par exemple, pour dupliquer un élément sélectionné), c'est une bonne idée de faire d'abord une copie. Les itérations sur les séquences ne font pas implicitement de copie. La notation de tranche rend ceci particulièrement utile:
>>> 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']
Dans l'exemple ci-dessus, l'histoire devient confuse si la liste elle-même change lors de l'activation de l'itérateur. J'ai compris qu'il serait préférable d'utiliser la notation de tranche dans de tels cas (peut-être faux).
Recommended Posts