python浅拷贝和深度拷贝

通过代码和结果来理解浅拷贝和深度拷贝,先来看看python中有那些常见的浅拷贝方法:

1.使用数据类型本身的构造器:

l1 = [1,2,3]
l2 = list(l1)

l1 == l2 #True
l1 is l2 #False

#l2就是l1的浅拷贝,set、dict与上面的浅拷贝一致


t1 = (1,2,3)
t2 = tuple(t1)

t1 == t2 #True
t1 is t2 #True

#由于tuple不可变,tuple返回一个指向相同元组的引用,与list、set、dict不一样

2.通过切片操作符‘:’完成浅拷贝:

l1 = [1, 2, 3]
l2 = l1[:]

l1 == l2 #True

l1 is l2 #False

3.python中提供的函数copy.copy(),适用于任何数据类型:

import copy
l1 = [1, 2, 3]
l2 = copy.copy(l1)

l1 == l2 #True
l1 is l2 #False

浅拷贝,是指重新分配一块内存,创建一个新对象,里面的元素是原对象中子对象的引用。如果元素可变(list、set、dict),浅拷贝会带来一些副作用。如果元素不可变(Number、String、Tuple),就没有这些副作用。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值