深拷贝浅拷贝

# 不能循环删list
# 一边循环一边删除,会导致下标错乱,删除有误
l=[1,1,2,3,4,5,6,7,8]
# for i in l:
# if i%2!=0:
# l.remove(i)
# print(l)

# 解决方法:重新定义一个变量赋值l列表
l2=[1,1,2,3,4,5,6,7,8]

for i in l2:
if i%2!=0:
l.remove(i)
print(l)

# 浅拷贝
l2=l # 这种方式是浅拷贝,内存地址l2和l相同
l2=l.copy() # 内存地址l2和l不相同,但是这种方式也是浅拷贝,因为如果list里面还要list,这种拷贝也会两个list相互影响
l2=l[:]
import copy
l2=copy.copy(l) # 也是浅拷贝
l2=copy.deepcopy(l) # 深拷贝,只有这一种是深拷贝,其他都是浅拷贝
print(id(l)) # 用id(l2)来获取变量l2的内存地址
print(id(l2))
posted @ 2021-04-30 12:47  zhengpei  阅读(50)  评论(0)    收藏  举报