问题
L1 = [1, 2, 3, [4, 5]]
L2 = L1
L2[0] = 233
print(L1)
print(L2)
"""
>>>[233, 2, 3, [4, 5]]
>>>[233, 2, 3, [4, 5]]
# 因为L1和L2的引用都相同,指向了同一个list对象
"""
使用copy()函数
import copy
L1 = [1, 2, 3, [4, 5]]
L2 = copy.copy(L1)
L2[0] = 2333
print(L1)
print(L2)
"""
>>>[1, 2, 3, [4, 5]]
>>>[2333, 2, 3, [4, 5]]
# 浅拷贝,这时L1和L2已经是两个不相同的对象了,
# 所以L2[0]改变没有影响到L1
"""
L2[3][0] = 2333
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 = [1, 2, 3, [4, 5]]
L2 = copy.deepcopy(L1)
L2[0] = 2333
L2[3][0] = 2333
print(L1)
print(L2)
"""
>>>[1, 2, 3, [4, 5]]
>>>[2333, 2, 3, [2333, 5]]
"""