Python 深拷贝、浅拷贝、切片

切片属于浅拷贝

import copy


>>> a = [1,2,[1,2]]
>>> b = a
>>> c = a[:]
>>> d = copy.copy(a)
>>> e = copy.deepcopy(a)


# 赋值
# 只是把变量a的地址赋值给b,不存在拷贝
>>> id(a)
4539103624
>>> id(b)
4539103624

# 浅拷贝
# 可以看到,切片和copy()生成的c和d变量地址发生了改变,他们指向不同的内存地址
>>> id(c)
4539032712
>>> id(d)
4537507720
# 深拷贝
>>> id(e)
4539050632


# 赋值,a,b两个变量指向的同一个内存地址
>>> id(a[2])
4539035144
>>> id(b[2])
4539035144
# 浅拷贝,列表内的列表只拷贝的地址,指向内存的实体对象不变
>>> id(c[2])
4539035144
>>> id(d[2])
4539035144
# 深拷贝,列表内的列表在内存中是一个新的实体对象
>>> id(e[2])
4539032648

原理图如下: 

变量c和变量d是一样的,就没画线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值