Python のリストがどのように機能するかを理解したと思ったとき...
>>> a = [1,2,3]
>>> b = a[:]
>>> b
[1,2,3]
>>> b[1]=100
>>> b
[1,100,3]
>>> a
[1,2,3]
ここまでは順調ですね。b が別のオブジェクトを指すように、a の内容で b を初期化しています。結果として、b の変更は a には影響しません。
次に、この別の例を見てみましょう。
>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> b = a[:][:]
>>> b
[[1,2,3],[4,5,6],[7,8,9]]
>>> b[1][1] = 100
>>> b
[[1,2,3],[4,100,6],[7,8,9]]
>>> a
[[1,2,3],[4,100,6],[7,8,9]]
今度は b の変更が a に影響を与えたのはなぜですか? 前の例と何が違うの?