リストのコピーについて

リストのコピーの振る舞いがイメージと違ったのでメモ

# 変数代入
>>> a = 1
>>> b = 2
>>> a
1
>>> b
2
>>>
>>>
# リスト代入の振る舞い
>>> a = [1,2,3]
>>> b = a
>>> a.append(4)
>>>
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3, 4]
>>>
# リストコピーの振る舞い
>>> a = [1,2,3]
>>> b = copy.copy(a)
>>> a.append(4)
>>>
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3]
>>>
>>>
# 多重リストコピーの振る舞い
>>> a = [[1,2],[3,4],[5,6]]
>>> b = copy.copy(a)
>>> a[0].append(7)
>>>
>>> a
[[1, 2, 7], [3, 4], [5, 6]]
>>> b
[[1, 2, 7], [3, 4], [5, 6]]
>>>
>>>
# 多重リストコピーの振る舞い(ディープコピー)
>>> a = [[1,2],[3,4],[5,6]]
>>> b = copy.deepcopy(a)
>>>
>>> a[0].append(7)
>>>
>>> a
[[1, 2, 7], [3, 4], [5, 6]]
>>> b
[[1, 2], [3, 4], [5, 6]]
>>>