Pythonで for と list.remove

初歩的な事かもしれませんが、
ちょっとつまづいたので、メモ程度な記録。

for 文と list.remove で予想外の動きでした。


List に値を入れて削除する場合、
range を使うと

>>> list = [0,1,2,3,4,5,6,7,8,9]
>>> len = len(list)
>>> for i in range(len):
...    list.remove(i)
...
>>> list
[]

なので、
これを list だけ使って、

>>> list = [0,1,2,3,4,5,6,7,8,9]
>>> for i in list:
...     list.remove(i)
...

の結果が、

>>> list
[]

になるかな?と思ったら、

>>> list
[1, 3, 5, 7, 9]

でした。

ちょっと予想外…。