深拷贝、浅拷贝

目录

1.直接赋值B = A

2.浅拷贝  B = copy.copy(A)

3.深拷贝 B = copy.deepcopy(A)


在python中赋值语句总是建立对象的引用值,而不是复制对象。因此,python变量更像是指针,而不是数据存储区域。

整片文章拿列表a = [1,2,[3,4]]举例。其实含有子对象[3,4]的。把A赋值/给B。

  • 1.直接赋值B = A

直接赋值将父类元素和子类元素的索引都赋值给另外一个值,改变A和B任何一个值另外一个值都会被改变

  • 2.浅拷贝  B = copy.copy(A)

浅拷贝是将父类的值赋值和子类的索引赋值给另外一个值。索引改变A和B任何一个值的父类元素另外一个值不会被改变。

但是改变任何一个值的子类元素,另外一个将会被改变。

  • 3.深拷贝 B = copy.deepcopy(A)

深拷贝是将父类和子类的值都赋值给另外一个值,父类和子类的索引都没有拷贝,索引改变A和B任何一个值的父类和子类都不会影响另外一个值。

#encoding=utf8
import numpy as  np
import copy

a = [1,2,[3,4]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a[0] = 9
a[2][0] = 9
print(a,'='*5,b,'\n')
print(a,'='*5,c,'\n')
print(a,'='*5,d,'\n')

[9, 2, [9, 4]] ===== [9, 2, [9, 4]] 

[9, 2, [9, 4]] ===== [1, 2, [9, 4]] 

[9, 2, [9, 4]] ===== [1, 2, [3, 4]] 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值