问题:给你一个列表['1','2','3',[4,5,6],[7,8,9]],请复制一份.要求两份列表相互完全独立.
方法1.切片会复制要返回的数据
list1 = ['1','2','3',[4,5,6],[7,8,9]]
list2 = list1[::]
print(id(list1),id(list2))
print(list2)
list2.pop(0)
print(list1)
print(list2)
结果如下:
方法2.浅拷贝(拷贝目标对象的第一层)
import copy
list1 = ['1','2','3',[4,5,6],[7,8,9]]
list2 = copy.copy(list1)
print(id(list1),id(list2))
list2.pop(0)
list2[2].pop(0)
print(list1)
print(list2)
结果如下:
结论:浅拷贝只拷贝了第一层数据,如果对拷贝后的数据进行操作,原数据也会发生改变。
方法3. 深拷贝(完全拷贝目标对象)
import copy
list1 = ['1','2','3',[4,5,6],[7,8,9]]
list2 = copy.deepcopy(list1)
print(id(list1),id(list2))
list2.pop(0)
list2[2].pop(0)
print(list1)
print(list2)
结果如下:
结论:深拷贝拷贝所有层的数据,如果对拷贝后的数据进行操作,原数据不会发生改变。
综上所述:方法3最为合适