深浅拷贝

一. = 拷贝
 从上到下,只有一个列表被创建

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.最快的方式就是二进制流的形式进行复制,速度最快

 

posted @ 2018-12-04 18:51  雾霾1024  阅读(154)  评论(0编辑  收藏  举报