深拷贝浅拷贝

问题:

l = [0, 1, 2,2, 3, 4, 5]
for i in l:
     if i % 2 == 0:
         l.remove(i)
 print(l) # [1,2,3,5]

原因:删除的过程中下标变了

解决:

l = [0, 1, 2,2, 3, 4, 5]
l2 = [0, 1, 2,2, 3, 4, 5] 
for i in l2:
     if i % 2 == 0:
         l.remove(i)
 print(l) # [1,3,5]

不知道list是什么内容的情况下,无法复制,需要怎么操作。l2=l  是不可行的。

l = [0, 1, 2,2, 3, 4, 5]
l2 = l # 浅拷贝
print(id(l))
print(id(l2))
for i in l2:
     if i % 2 == 0:
         l.remove(i)
 print(l) # [1,2,3,5]

导入copy模块。

l = [0, 1, 2,2, 3, 4, 5]
l2 =  copy.deepcopy(l)#深拷贝
print(id(l)) # 内存地址
print(id(l2))
for i in l2:
     if i % 2 == 0:
         l.remove(i)
 print(l) # [1,3,5]
l = [ 1,2,3,[4,5,6] ]
# l2 = l.copy()
# l2 = copy.copy(l)

l2 = l[:]

print(id(l))
print(id(l2))
l[-1].append('abc')
print(l)
print(l2)

浅拷贝/深拷贝 #如果复制了一个变量,这两个变量其中一个变了之后,不应该影响另外一个的情况下,就要用深拷贝

原文地址:https://www.cnblogs.com/Noul/p/15019940.html