深淺拷貝通俗易懂版
# 淺拷貝
l1 = [1, 2, [3, 4]]
l2 = l1.copy()
l2[0] = 66 # 該變淺拷貝后列表中不可變類型的值 [66, 2, [3, 4]]
print(id(l2)) #1532404207560
print(id(l1)) #1532282360904 拷貝后id不一樣
l2[2][0] = 5 # 改變淺拷貝后列表中可變類型的值
# print(l2) # [66, 2, [5, 4]]
print(id(l2[0])) #140723557857568
print(id(l1[0])) #140723557855488 改變淺拷貝后列表中不可變類型的值只會改變自己的值所以id不一樣
print(id(l2[2][0])) #140723557855616
print(id(l1[2][0])) #140723557855616 改變淺拷貝后列表中可變類型的值兩個值都會一起變所以id一樣

# 2、深拷貝
l1 = [1, 2, [3, 4]]
import copy
l2 = copy.deepcopy(l1)
l2[0] = 66 # 該變深拷貝后列表中不可變類型的值 [66, 2, [3, 4]]
print(id(l2)) #1532404207560
print(id(l1)) #1532282360904 拷貝后id不一樣
l2[2][0] = 5 # 改變深拷貝后列表中可變類型的值
# print(l2) # [66, 2, [5, 4]]
print(id(l2[0])) #140723557857568
print(id(l1[0])) #140723557855488 改變深拷貝后列表中不可變類型的值只會改變自己的值所以id不一樣
print(id(l2[2][0])) #140723557855616
print(id(l1[2][0])) #140723557855552 改變深拷貝后列表中可變類型的值仍然只會改變自己的值所以id不一樣
