python数据类型的深浅拷贝

点击上方蓝字关注我哦

python数据类型的深浅拷贝首先要了解什么是拷贝、浅拷贝、深拷贝?

python数据类型的深浅拷贝

python数据类型的深浅拷贝

python数据类型的深浅拷贝

                            python数据类型的深浅拷贝

    拷 贝:  

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

    浅拷贝:

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

  深拷贝:

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

python数据类型的深浅拷贝

                                

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

01

python数据类型的深浅拷贝

不可变数据类型的定义:

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

python中 不可变数据类型:

  • 整型

  • 浮点数

  • 布尔值

  • 字符串

  • 元组

可变数据类型的定义:

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

python中 可变数据类型:

  • 列表

  • 字典

  • 集合

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

02

python数据类型的深浅拷贝

不可变数据类型:

赋值

浅拷贝

深拷贝

可变数据类型:

赋值

浅拷贝

深拷贝

python数据类型的深浅拷贝不可变数据类型

python数据类型的深浅拷贝

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

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

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

python数据类型的深浅拷贝

不可变数据类型浅拷贝

使用copy模块的copy()方法

import copy

a1 = 3.14

a2 = copy.copy(a1)

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

# 输出结果

1698640564680 1698640564680

结论

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

python数据类型的深浅拷贝可变数据类型

python数据类型的深浅拷贝

可变数据类型赋值:

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

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

python数据类型的深浅拷贝

END

python数据类型的深浅拷贝

python数据类型的深浅拷贝

python数据类型的深浅拷贝

扫码关注我们呗python数据类型的深浅拷贝python数据类型的深浅拷贝

python数据类型的深浅拷贝

python数据类型的深浅拷贝

我就知道你“在看”

python数据类型的深浅拷贝

相关文章:

  • 2022-02-10
  • 2022-12-23
  • 2021-06-06
  • 2021-07-25
  • 2022-12-23
  • 2021-10-05
猜你喜欢
  • 2021-06-10
  • 2018-05-15
  • 2021-08-28
  • 2021-10-19
  • 2021-06-20
  • 2021-07-04
  • 2021-05-25
相关资源
相似解决方案