打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python数据类型的深浅拷贝

首先要了解什么是拷贝、浅拷贝、深拷贝?

                            

    拷 贝:  

  从原始数据复制一份出来,当复制成功后,这两份数据都是相互独立的,即修改任意一份数据都不会影响另一份数据。

    浅拷贝:

 python中,浅拷贝就是只是拷贝最外层的类型,简单来讲就是拷贝了引用,并没有拷贝内容. copy.copy()

  深拷贝:

 对于一个对象所有层次的拷贝(递归拷贝)copy.deepcopy()

 要知道深浅拷贝的区别,首先要知道python中什么是 可变数据类型 和 不可变数据类型

01

不可变数据类型的定义:

 python中的不可变数据类型,值发生改变,id也改变

python中 不可变数据类型:

  • 整型

  • 浮点数

  • 布尔值

  • 字符串

  • 元组

可变数据类型的定义:

 可变数据类型,值改变,但是id可以不变

python中 可变数据类型:

  • 列表

  • 字典

  • 集合

通过python中数据类型的分类,我们谈论以下几种的拷贝:

02

不可变数据类型:

赋值

浅拷贝

深拷贝

可变数据类型:

赋值

浅拷贝

深拷贝

不可变数据类型

不可变数据类型赋值:不改变值

只是进行了值的传递给不同的变量名,还在同一个空间

a1 =  1

print(id(a1))

a2 = a1

print(id(a2))

结果:

1867822144

1867822144

改变值

只能进行赋值操作才能改变改值,以整型举例

a1 =  1

print(id(a))

# 要想改变a的值,那就只能赋值,而进行赋值操作就已经改变了id

a1 = 2 

print(id(a))

结果:

1867822144

1867822176


不可变数据类型浅拷贝

使用copy模块的copy()方法

import copy

a1 = 3.14

a2 = copy.copy(a1)

print(id(a1), id(a2))

# 输出结果

1698640564680 1698640564680

结论

通过使用copy模块里的copy()函数来进行浅拷贝,把a1拷贝一份赋值给a2,查看输出结果发现,a1和a2的内存地址还是一样。

可变数据类型


可变数据类型赋值:

a1 = [1,2,3,4]

a2 = a1

print(id(a1),id(a2))

# 输出结果 不改变id

2805765390984 2805765390984

可变数据类型浅拷贝:

调用列表的方法copy()

a  = [1,2,3,4]

a1 = [1,2,3,4,a]

a2 = a1.copy()

print(id(a1),id(a2))

# 输出的外层id发生了改变

2943074293576 2943074291912

print(id(a1[4]),id(a2[4]))

# 输出的内层id没有发生了改变

2943073469064 2943073469064

没有实现真正的拷贝,内层的元素会让拷贝后的列表受到影响

可变数据类型深拷贝:

导入模块copy,使用方法deepcopy()

import copy

a  = [1,2,3,4]

a1 = [1,2,3,4,a]

a2=copy.deepcopy(a1)

print(id(a1),id(a2))

# 输出结果 外层id改变

1929499550024 1929499551304

print(id(a1[4]),id(a2[4]))

# 输出结果 内层也id改变

1929499549832 1929499551240

实现真正的拷贝,内层的元素不会让拷贝后的列表受到影响

END


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深度解读Python深拷贝与浅拷贝问题
Python中深拷贝与浅拷贝的区别?
Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点、python的可变不可变的数据类型、赋值浅拷贝深拷贝区别
图解 Python 中深浅拷贝(copy)
第118天:Python 之对象的比较与拷贝
面试题-python 浅拷贝和深拷贝(copy模块)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服