首页 > 编程语言 >python 赋值、浅拷贝、深拷贝的区别

python 赋值、浅拷贝、深拷贝的区别

时间:2023-11-18 09:45:01浏览次数:44  
标签:指向 python 对象 deepcopy 拷贝 copy 赋值

b = a: 赋值引用,a 和 b 都指向同一个对象。

b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

对于可变的序列,切片操作符 :是浅拷贝 比如:a=b[:]

示例:

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']数组对象

 

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']]         浅拷贝:a和c子对象指向统一对象,所以增加了 ’c'
d = [1, 2, 3, 4, ['a', 'b']]    深拷贝:a和d是完全独立的对象,修改a 不会影响d

标签:指向,python,对象,deepcopy,拷贝,copy,赋值
From: https://www.cnblogs.com/wieneralan/p/17840067.html

相关文章

  • python:第十六章:赋值运算符
    一,什么是赋值运算符?赋值运算符的执行顺序赋值运算符=它用来把值赋给变量。运算符右边的表达式先计算得到结果,再将结果赋值给左边的变量12345#赋值x=5y=x+3print("x=",x)print("y=",y)运行结果:x=5y=8二,链式赋值就是同时给......
  • python:第十七章:布尔运算符(逻辑运算符)
    一,布尔运算符有哪些?and运算是与运算,只有两个值都为True,and运算结果才是True,如下表abaandbTrueTrueTrueTrueFalseFalseFalseTrueFalseFalseFalseFalseor运算是或运算,只要其中有一个值为True,or运算结果就是TrueabaorbTrueTrueT......
  • python:第十八章:比较运算符
    一,比较运算符是什么?用于比较两个值的运算符。作用:对两个值进行比较,并返回一个布尔值(True或False)作为比较的结果1,比较运算符有哪些主要有六种比较运算符:小于(<)小于等于(<=)大于(>)大于等于(>=)等于(==)不等于(!=)2,字符串的比较规则:按字母的顺序比较:顺序越靠前则值越小,顺......
  • python:第十九章:数据类型之None
    一,什么是None?None表示空值,其类型为NoneType,内存中值为None的对象是同一个实例123456789#None的类型print("None的类型:",type(None)) #输出<class'NoneType'> #值为None的对象是同一个实例,#由于内存None只有一个,所以aisb的结果为True......
  • python:第二十章:数据类型转换之bool
    一,如何得到对象的布尔值?Python中,所有的数据都是对象,如整数、浮点数、字符串、列表、字典等。每个对象都有一个布尔值,用于表示对象的真假内置函数bool()能用来获取对象的布尔值。它把对象转换为布尔值,返回True或False,表示对象为真或假看例子:非0数字的布尔值为True,0的布尔值......
  • 代码随想训练营第三十七天(Python)| 738.单调递增的数字、968.监控二叉树
    738.单调递增的数字classSolution:defmonotoneIncreasingDigits(self,n:int)->int:#主要思路当前数字比前面数字小时。前面数字-1,当前数字变2为9str_n=str(n)foriinrange(len(str_n)-1,0,-1):ifstr_n[i]<str_n[......
  • 代码训练营第三十八天(Python)| 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
    509.斐波那契数1、动态规划classSolution:deffib(self,n:int)->int:ifn<=1:returnn#dp[i]代表第i个数的斐波那契值dp=[0]*(n+1)dp[0]=0dp[1]=1foriinrange(2,n+1):......
  • vector赋值操作
    给vector容器进行赋值vector&operator=(constvector&vec);//重载等号操作符assign(beg,end);//将[beg,end)区间中的数据拷贝赋值给本身。assign(n,elem);//将n个elem拷贝赋值给本身。示例:#include<vector>​voidprintVector(vector<int>&v){​......
  • Python 使用 MQTT
    官方参考文档:https://docs.emqx.com/zh/cloud/latest/connect_to_deployments/python_sdk.html参考文档:https://zhuanlan.zhihu.com/p/187481769发布消息首先定义一个while循环语句,在循环中我们将设置每秒调用MQTT客户端 publish 函数向 /python/mqtt 主题发送消息。......
  • Python8days
    如何开启事务介绍常见的字段类型和参数图书管理系统MVC和MTV模式创建多对多表关系的三种方式AJAx的介绍Ajax的案例—————————————————————————————————————————————————————————————————————————......