当前位置: 首页 > news >正文

黄骅做网站价格/广告咨询

黄骅做网站价格,广告咨询,响应式网站建设好么,大连零基础网站建设教学培训一、引用、浅拷贝、深拷贝 1、赋值:B A,相当于为变量创建一个引用。A和B指向的是同一个地址,id(A)id(B) 2、浅拷贝: B copy.copy(A)。只拷贝第一层元素,若A是嵌套的对象,B不会拷贝嵌套的对象,…

一、引用、浅拷贝、深拷贝

1、赋值:B = A,相当于为变量创建一个引用。A和B指向的是同一个地址,id(A)==id(B)

2、浅拷贝: B = copy.copy(A)。只拷贝第一层元素,若A是嵌套的对象,B不会拷贝嵌套的对象,而是引用嵌套的对象。

      id(A) != id(B) ,修改A的第一层元素,B不会变

        id( A[x] ) == id( B[x] ),修改A中嵌套对象中的元素(第二层),B也会变

3、深拷贝: B = copy.deepcopy(A)。修改A中的任何一个元素,不会影响B

      id(A) != id(B)

      若x所在元素是原子类型对象(如数字、字符串),id(A[x]) ==id(B[x]) ,修改A 的第一层元素,B不会变

      若x所在元素是容器对象(如list、dict),id(A[x]) != id(B[x]),修改A中嵌套对象中的元素(第二层),B也不会变

 

二、对于原子类型对象(如数字、字符串),没有深拷贝一说 。所有的拷贝都是浅拷贝。修改原始数据都会开辟一个新的内存地址,而不会影响到拷贝的对象

A = 'hello'
B = A
C = copy.copy(A)
D = copy.deepcopy(A)
print('id(A) = %d, id(B) = %d, id(C) = %d, id(D) = %d' % (id(A), id(B), id(C), id(D)))
A = 'bye'
print(A,B,C,D)
print('id(A) = %d, id(B) = %d, id(C) = %d, id(D) = %d' % (id(A), id(B), id(C), id(D)))

 

查看打印结果:

id(A) = 1992128, id(B) = 1992128, id(C) = 1992128, id(D) = 1992128
bye hello hello hello
id(A) = 1992256, id(B) = 1992128, id(C) = 1992128, id(D) = 1992128

 

三、举例说明

import copydef printid(x, name): #打印地址函数if isinstance(A, list):for i in range(len(x)):print(name + '[' + str(i) + '] =' + str(id(x[i])), end='  ')elif isinstance(x, dict):for key in x:print(name + '[' + str(key) + '] =' + str(id(x[key])), end='  ')print()A = ['a', 'b', ['c', 'd', 'e']]
B = A
C = copy.copy(A)
D = copy.deepcopy(A)
print('id(A) = %d, id(B) = %d, id(C) = %d, id(D) = %d' % (id(A),id(B), id(C), id(D)))
printid(A, 'A')
printid(B, 'B')
printid(C, 'C')
printid(D, 'D')
printid(A[2], 'A[2]')
printid(B[2], 'B[2]')
printid(C[2], 'C[2]')
printid(D[2], 'D[2]')
A.append('f')
A[0] = 'aa'
A[2][1] = 'dd'
A[2].append('hh')
print('A = ', A)
print('B = ', B)
print('C = ', C)
print('D = ', D)

 

查看打印结果:

id(A) = 41993400, id(B) = 41993400, id(C) = 41994160, id(D) = 41994120 
A[0] =4790880  A[1] =4815712  A[2] =41993160  
B[0] =4790880  B[1] =4815712  B[2] =41993160  
C[0] =4790880  C[1] =4815712  C[2] =41993160  
D[0] =4790880  D[1] =4815712  D[2] =41994080  #只有深拷贝中指向['c', 'd', 'e']的地址不一样
#四个对象保存['c', 'd', 'e']中的每个原子对象的地址一样
A[2][0] =4765856  A[2][1] =4766720  A[2][2] =4766656  
B[2][0] =4765856  B[2][1] =4766720  B[2][2] =4766656  
C[2][0] =4765856  C[2][1] =4766720  C[2][2] =4766656  
D[2][0] =4765856  D[2][1] =4766720  D[2][2] =4766656  
A =  ['aa', 'b', ['c', 'dd', 'e', 'hh'], 'f']
B =  ['aa', 'b', ['c', 'dd', 'e', 'hh'], 'f'] #B = A
C =  ['a', 'b', ['c', 'dd', 'e', 'hh']] 
D =  ['a', 'b', ['c', 'd', 'e']]
#A[0]保存字符串,是不可变的,所以A新开辟一个内存保存'aa',不影响B和C
# id(C)和id(D)都与id(A)不相同,A中加入新的元素‘f’时,也不会影响B和C。id(A[2]) = id(C[2]),且A[2]保存的是一个容器对象,是可变的。因此A[2]变了,C[2]也会变
#id(A[2])!=id(D[2]),且A[2][1]中保存的是字符串,是不可变对象。因此,A新开辟一个内存保存‘dd’,而D保持不变’‘’

 

转载于:https://www.cnblogs.com/jessicaxu/p/7726614.html

http://www.lbrq.cn/news/1051777.html

相关文章:

  • 公司后台网站怎么做/口碑营销公司
  • 做网站不会框架/企业文化培训
  • 西安网站制作中心/网游推广员
  • 个人主页建站/百度今日小说排行榜
  • 网站审核时间/搜索引擎优化的例子
  • 顺德网站开发招聘/无锡网站制作
  • html5转wordpress主题/seo标题优化裤子关键词
  • 在婚恋网站上做红娘怎么样/不受国内限制的浏览器下载
  • 聊城做网站的公司平台/快速建站平台
  • 网站花瓣飘落的效果怎么做/安徽网站推广优化
  • vue做网站/seo如何优化关键词
  • 温州建设小学网站首页/东莞今天新增加的情况
  • 网站开发图片存哪里/seo关键词优化平台
  • 怎样维护网站建设/目前最新的营销方式有哪些
  • 还有多少用.net做网站的/成都seo培训班
  • 郑州手机网站制作/app001推广平台官网
  • 中建材建设有限公司网站/上海企业优化
  • 重庆南岸营销型网站建设公司哪家专业/sem推广竞价
  • 广西贵港建设集团有限公司网站/艾滋病阻断药有哪些
  • 做网站需要的带宽上行还是下行/培训机构是干什么的
  • 一元购网站建设流程图/推广普通话手抄报简单
  • 静态网页素材/seo网站优化排名
  • 漳州网站建设优化/淮北seo排名
  • 做网站网站如何定位/app下载注册量推广平台
  • 长沙网站模板建设/一键识图找原图
  • 快速开发手机网站/微商引流的最快方法是什么
  • 买网站去哪买/关键词挖掘方法
  • 做秩序册的网站/附近的成人电脑培训班
  • 不建网站如何做淘宝客/无锡网站制作
  • 博网站建设/抖音自动推广引流app
  • Poetry与UV——现代Python依赖管理的革新者
  • “高大上“的SpringCloud?(微服务体系入门)
  • ImageJ 实用技巧:通过 Overlay 实现图像透明标记的完整教程
  • 机器学习(西瓜书)学习——绪论
  • 软件定义车辆加速推进汽车电子技术
  • C/C++与JavaScript的WebAssembly协作开发指南