深拷贝,浅拷贝

  先来个实例:

 1 # 错误示范
 2 # li = [1,1,2,3,4,5,6,7,8,9]
 3 # for i in li:
 4 #     if i%2!=0:
 5 #         li.remove(i)
 6 # print(li)
 7 # 循环list,不要删除元素,下标会错乱
 8 # 循环删除list会出现上面的问题
 9 
10 
11 # 正确示范
12 li = [1,1,2,3,4,5,6,7,8,9]
13 l2=[1,1,2,3,4,5,6,7,8,9]
14 for i in l2:            #循环l2
15     if i%2!=0:
16         li.remove(i)    #删除li
17 print(li)

  浅拷贝:共用的同一个内存地址(对其中一个变量操作,会影响另个一变量的值)

  深拷贝:开辟了新的内存地址

 1 li = [1,1,2,3,4,5,6,7,8,9]
 2 l2=[1,1,2,3,4,5,6,7,8,9]        #深拷贝
 3 l4=li[:]                        #深拷贝
 4 #浅拷贝(用的同一个内存地址)
 5 l3=li                           #浅拷贝
 6 # print(id(l3))
 7 
 8 # 深拷贝(会开辟新的内存地址)
 9 print(id(li))
10 print(id(l2))
11 print(id(l4))
12 import copy                 #导入copy模块
13 d={'name':'xiaohei'}
14 d1=copy.deepcopy(d)         #深拷贝
15 d2=copy.copy(d)             #浅拷贝(多层嵌套,修改值会相互影响)
16 print(id(d))
17 print(id(d1))
原文地址:https://www.cnblogs.com/cwl-bj/p/10776138.html