Pythonでリストの中身が勝手に変わってしまう時は
Python2.7
Pythonのあるリスト(Aとする)に別のリスト(Bとする)をアペンドすると、アペンドしたリスト(B)の変更がアペンド先のリスト(A)の中身に影響を与えることがある←よくわかってないです
例
>>> listA = ['A'] >>> listB = ['B'] >>> listA.append(listB) >>> listA ['A',['B']] >>> listB.append('C') >>> listB ['B','C'] >>> listA ['A',['B','C']] ← これ
これを回避するためには、copyモジュールのdeepcopy関数を使うと良いらしい。
>>> import copy >>> listA = ['A'] >>> listB = ['B'] >>> listA.append(copy.deepcopy(listB)) ← ここで使います >>> listA ['A',['B']] >>> listB.append('C') >>> listB ['B','C'] >>> listA ['A',['B']] ← listBの変更の影響を受けなくなった