Pythonで2次元配列を作った時の処理の違いについて
解決したいこと
[0]が入った配列を3 * 3だけ作った後、その中身を入れようとすると同じ操作をしているように見えて結果が変わってくるということについて質問したいです。
mass = [[0] * 3 for _ in range(3)]
>>> print(mass)
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> mass[1][1] = 2
>>> print(mass)
[[0, 0, 0], [0, 2, 0], [0, 0, 0]]
mass = [[0] * 3] * 3
print(mass)
>[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
mass[1][1] = 2
[[0, 2, 0], [0, 2, 0], [0, 2, 0]]
上では正しい位置に2を代入することができたのですが、下のように配列を作ると全ての1つ目の場所に2が挿入されてしまっています。
最初のmassの作り方の違いが影響を与えているのは分かるのですが、どういった理由で違いが生まれているのでしょうか?
教えていただけると幸いです。
0