非常に単純なPythonです。古いリストをコピーして新しいリストオブジェクトを作成するだけです。 .copy()メソッドを使用することで、Pythonで公式の文書に基づいて新しいオブジェクトを作成する必要があると思いました。https://docs.python.org/3.6/library/stdtypes.html?highlight=list#list
新しいオブジェクトの要素を更新した後、古いリストオブジェクトの要素も変更されました。私は古い値を期待する出力がどのように来るlist.copy()の後に新しいオブジェクトを更新すると、古いオブジェクトも変更されるのはなぜですか?
old = [[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]]
print(old)
new = old.copy()
for i in range(len(new)):
for j in range(len(new[0])):
new[i][j] = 0
print(old)
print(new)
は、変更しないでください。
[[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
'list.copy'はシャローコピーを行います。したがって、外側のリストにリストが含まれている場合、新しいリストは引き続き古い内側のリストを参照します。 'deepcopy'をインポートしたくない場合は、内部リストのコピーを作成するためにこれを行うことができます:' new = [u [old]にはu [:]] '。 –