先来个实例:
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))