python3中赋值、深复制和浅复制的区别

本文深入探讨了Python中列表的三种复制方式:直接赋值、浅复制和深复制的区别及应用场景。通过实例演示了不同复制方式下,原始列表及其副本在修改时的行为差异。

1、直接赋值:默认浅复制传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变。其实就是对象的引用(别名)

2、浅复制(copy):copy方法为浅复制,没有复制子对象,所以原始数据改变,子对象会改变。

3、深复制(deepcopy): copy 模块的 deepcopy 方法,包含对象里面的自对象的复制,所以原始对象的改变不会造成深复制里任何子元素的改变。

例子:

#!/usr/bin/python
# -*-coding:utf-8 -*-
 
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
 
b = a                       #赋值,传对象的引用
c = copy.copy(a)            #对象拷贝,浅拷贝
d = copy.deepcopy(a)        #对象拷贝,深拷贝
 
a.append(5)                 #修改对象a
a[4].append('c')            #修改对象a中的['a', 'b']数组对象
 
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )

结果:

a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c =  [1, 2, 3, 4, ['a', 'b', 'c']]
d =  [1, 2, 3, 4, ['a', 'b']]

例子引用:http://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值