問題
L1 = [, , , [, ]]
L2 = L1
L2[] =
print(L1)
print(L2)
"""
>>>[233, 2, 3, [4, 5]]
>>>[233, 2, 3, [4, 5]]
# 因為L1和L2的引用都相同,指向了同一個list對象
"""
使用copy()函數
import copy
L1 = [, , , [, ]]
L2 = copy.copy(L1)
L2[] =
print(L1)
print(L2)
"""
>>>[1, 2, 3, [4, 5]]
>>>[2333, 2, 3, [4, 5]]
# 淺拷貝,這時L1和L2已經是兩個不相同的對象了,
# 是以L2[0]改變沒有影響到L1
"""
L2[][] =
print(L1)
print(L2)
"""
>>>[1, 2, 3, [2333, 5]]
>>>[2333, 2, 3, [2333, 5]]
# 注意到,當改變了L2内嵌的list時,L1的也随之改變了
# 這時因為L1和L2指向的是同一個内嵌的list(淺拷貝)
# 如果學過c++這點很好了解,相當于對象之間指派時,淺拷貝,指針指向了同一塊記憶體
"""
使用deepcopy()解決以上問題
import copy
L1 = [, , , [, ]]
L2 = copy.deepcopy(L1)
L2[] =
L2[][] =
print(L1)
print(L2)
"""
>>>[1, 2, 3, [4, 5]]
>>>[2333, 2, 3, [2333, 5]]
"""