python之深浅拷贝

1.=的意义

  s1= s2       将s2的值赋值给s1    id(s1) = id(s2)

2.浅拷贝copy

  只拷贝第一层,拷贝表面

  id(s1) !=  id(s2)

  2.1 

lst1 = ["元素1", "元素2", "元素3", "元素4"]
lst2 = lst1.copy()  # 拷贝, 可以帮我们创建新的对象,和原来长的一模一样, 浅拷贝

print(id(lst1))
print(id(lst2))   # id(lst1)  !=id(lst2)

lst1.append("元素5")
print(lst1)
print(lst2)   #lst1 和 lst2  输出内容不一致    lst1中有元素5,lst2中没有元素5
 lst1 = ["元素1", "元素2", "元素3", "元素4", ["元素5", "元素6", "元素7"]]
 lst2 = lst1.copy() # 浅拷贝. 只拷贝第一层内容

 print(id(lst1))
 print(id(lst2))

 print(lst1)
 print(lst2)

 lst1[4].append("元素8")
 print(lst1)
 print(lst2)  #lst1和lst2中内容一致

 

 

3.深拷贝

  对象内部的所有内容都要复制一份

  需要引入copy模块

 lst1 = ["元素1", "元素2", "元素3", "元素4", ["元素5", "元素6", "元素7"]]
 lst2 = copy.deepcopy(lst1)  # 深拷贝: 对象内部的所有内容都要复制一份.

 print(id(lst1))
 print(id(lst2))

 print(lst1)
 print(lst2)

 lst1[4].append("葫芦娃")
 print(lst1)
 print(lst2)   #lst1 和lst2 输入内容不一致

 

posted @ 2020-11-02 23:31  QV  阅读(76)  评论(0编辑  收藏  举报