なぜこうなった?
バージョン 1:
mylist= [1,2,3,4,5]
print mylist
for index, value in enumerate(mylist):
value = 0
print mylist
バージョン 2:
mylist= [[1],[2],[3],[4],[5]]
print mylist
for index, value in enumerate(mylist):
value[0] = 0
print mylist
出力 1:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
出力 2:
[[1], [2], [3], [4], [5]]
[[0], [0], [0], [0], [0]]
どちらのバージョンもローカル変数を作成し、リスト自体を上書きしないと想定しました。2番目のバージョンではそうではないと思います。私はpython 2.7を使用しています。明らかに、値の別のコピーを作成する for ループ内に別の変数を含めることができます。これを理解するのに少し時間がかかり、コードの機能が台無しになりました。
解決:
value = list(value)