资讯专栏INFORMATION COLUMN

Python浅拷贝与深拷贝

Yu_Huang / 1113人阅读

摘要:浅拷贝与深拷贝上一篇文章文件夹处理下一篇文章与对比浅拷贝浅拷贝拷贝了引用,没有拷贝内容。实例的的结果的的深拷贝深拷贝对于一个对象所有层次的拷贝递归。

Python浅拷贝与深拷贝
上一篇文章:Python文件夹处理
下一篇文章:Python==与is对比
1、浅拷贝
浅拷贝:拷贝了引用,没有拷贝内容。

实例:

a=[1,2,3]
b=a

print("a的id:",id(a))
print("b的id:",id(b))

a.append(4)
print(a)
print(b)

结果:

a=[1,2,3]
b=a

print("a的id:",id(a))
print("b的id:",id(b))

a.append(4)
print(a)
print(b)
2、深拷贝
深拷贝:对于一个对象所有层次的拷贝(递归)。

使用copy.deepcopy()完成深拷贝

实例:

import copy
a=[1,2,3]
b=[4,5,6]

c=[a,b]

d=c
e=copy.deepcopy(c)




print("c的值",c)
print("d的值",d)
print("e的值",e)

print("c的id:",id(c))
print("d的id:",id(d))
print("e的id:",id(e))

a.append(7)
print("c的值",c)
print("d的值",d)
print("e的值",e)

print("c的id:",id(c))
print("d的id:",id(d))
print("e的id:",id(e))

结果:

c的值 [[1, 2, 3], [4, 5, 6]]
d的值 [[1, 2, 3], [4, 5, 6]]
e的值 [[1, 2, 3], [4, 5, 6]]
c的id: 4329011592
d的id: 4329011592
e的id: 4333645768
c的值 [[1, 2, 3, 7], [4, 5, 6]]
d的值 [[1, 2, 3, 7], [4, 5, 6]]
e的值 [[1, 2, 3], [4, 5, 6]]
c的id: 4329011592
d的id: 4329011592
e的id: 4333645768
3、cope.cope()对可变类型和不可变类型影响不同

实例:

import copy
a=[1,2,3]
b=copy.copy(a)

print("a的id:",id(a))
print("b的id:",id(b))

a.append(4)
print(a)
print(b)


#不可变类型
c=(1,2,3)
d=copy.copy(c)

print("c的id:",id(c))
print("d的id:",id(d))

结果:

a的id: 4372057096
b的id: 4372055816
[1, 2, 3, 4]
[1, 2, 3]
c的id: 4372006736
d的id: 4372006736

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42210.html

相关文章

  • python:复制与引用、拷贝与深拷贝

    1 python语言哲学:赋值语句,都是引用。 # 将a赋值给b,改变a的第一个元素,b的第一个元素随之改变 a = [1, 2, 3] b = a print(b) #[1, 2, 3] a[0] = 0 print(a) #[0, 2, 3] b #[0, 2, 3] 2 想a和b互不干扰怎么办?拷贝啊! # 2.1 浅拷贝 切片 [::] [开始:结束:步进] a = [1, 2, 3...

    xcc3641 评论0 收藏0
  • 拷贝与深拷贝的区别

    摘要:浅拷贝与深拷贝一数据类型数据分为基本数据类型,和对象数据类型。浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。对于字符串数字及布尔值来说不是或者对象,会拷贝这些值到新的数组里。 浅拷贝与深拷贝 一、数据类型数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型。 基本数据类...

    jsyzchen 评论0 收藏0
  • JavaScript中的拷贝与深拷贝

    摘要:所以,深拷贝是对对象以及对象的所有子对象进行拷贝实现方式就是递归调用浅拷贝对于深拷贝的对象,改变源对象不会对得到的对象有影响。 为什么会有浅拷贝与深拷贝什么是浅拷贝与深拷贝如何实现浅拷贝与深拷贝好了,问题出来了,那么下面就让我们带着这几个问题去探究一下吧! 如果文章中有出现纰漏、错误之处,还请看到的小伙伴多多指教,先行谢过 以下↓ 数据类型在开始了解 浅拷贝 与 深拷贝 之前,让我们先...

    546669204 评论0 收藏0
  • JavaScript中的拷贝与深拷贝

    摘要:所以,深拷贝是对对象以及对象的所有子对象进行拷贝实现方式就是递归调用浅拷贝对于深拷贝的对象,改变源对象不会对得到的对象有影响。 上一篇 JavaScript中的继承 前言 文章开始之前,让我们先思考一下这几个问题: 为什么会有浅拷贝与深拷贝 什么是浅拷贝与深拷贝 如何实现浅拷贝与深拷贝 好了,问题出来了,那么下面就让我们带着这几个问题去探究一下吧! 如果文章中有出现纰漏、错误之处...

    AZmake 评论0 收藏0
  • 关于js的拷贝与深拷贝

    摘要:原文地址浅拷贝和深拷贝只针对像这样的复杂对象的简单来说,浅拷贝只拷贝一层对象的属性,而深拷贝则递归拷贝了所有层级。浅拷贝通过来实现浅拷贝。 原文地址:http://www.silenceboy.com/201... 浅拷贝和深拷贝只针对像Object, Array这样的复杂对象的.简单来说,浅拷贝只拷贝一层对象的属性,而深拷贝则递归拷贝了所有层级。 浅拷贝 通过 Object.ass...

    summerpxy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<