一. = 拷贝
从上到下,只有一个列表被创建
lst1 = ["胡辣汤","灌汤包","油泼面","麻辣香锅"] lst2 = lst1 print(id(lst1),id(lst2)) #一个东西 lst1.append("盖浇饭") print(lst2)
二.浅拷贝
创建一个新的,和原来的长得一样
lst1 = ["胡辣汤","灌汤包","油泼面","麻辣香锅"] lst2 = lst1.copy() print(id(lst1),id(lst2)) #创建新的 和原来的一样 lst1.append("盖浇饭") #和第二个列表无关 print(lst2)
浅拷贝只能拷贝到第一层
lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]] lst2 = lst1.copy() # 浅拷贝. 只拷贝第一层内容 print(id(lst1),id(lst2)) lst1[4].append("赵王城") print(lst2) #浅拷贝只能拷贝到第一层
三.深拷贝
需要导入一个 copy 包
深拷贝 拷贝对象的所有东西
import copy lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]] lst2 = copy.deepcopy(lst1) #深拷贝 :拷贝对象内部的所有东西 print(id(lst1),id(lst2)) lst1[4].append("盖浇饭") print(lst1,lst2)
四.为什么要深浅拷贝
1.提高创建对象的速度
2.计算机中最慢的就是创建对象,需要分配内存地址
3.最快的方式就是二进制流的形式进行复制,速度最快