博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深浅拷贝与赋值
阅读量:4927 次
发布时间:2019-06-11

本文共 1611 字,大约阅读时间需要 5 分钟。

参考:http://www.cnblogs.com/Eva-J/p/5534037.html

对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。(可以把数字,字符串看作是内存中最小的地址)

对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。浅拷贝只拷贝第一层地址,而深拷贝是不管你数据结构多么复杂,都在内存里开辟一块新的空间,直到简单数据类型为止。

以这个字典为例:

dict = {"k1":"mu","k2":23,"k3":["alex",123]}

赋值                                                                                                                                                                                                                                                                           

dict = {
"k1":"mu","k2":23,"k3":["alex",123]}dict1=dictprint(id(dict))print(id(dict1)) 输出结果:22430424608722243042460872
浅拷贝                                                                                                                                                                                                                                                                         

 

 

 

import copydict = {
"k1":"mu","k2":23,"k3":["alex",123]}dict2=copy.copy(dict)print(id(dict))print(id(dict2))print(id(dict['k3']))print(id(dict2['k3']))输出结果:2053865129160205386557120820538670155602053867015560
深拷贝                                                                                                                                                                                                                                                                         

import copydict = {
"k1":"mu","k2":23,"k3":["alex",123]}dict3 = copy.deepcopy(dict)print(id(dict))print(id(dict3))print(id(dict['k3']))print(id(dict3['k3']))输出结果:3045244716232304524512474430452466017363045246600456

深浅copy的应用举例:

 

1 import copy 2 dic = { 3     "cpu":[80,], 4     "mem":[80,], 5     'disk':[80,] 6 } 7 print('before:',dic) 8 new_dic = copy.copy(dic) 9 new_dic['cpu'][0] = 5010 print(dic)11 print(new_dic)12 输出结果:13 before: {
'disk': [80], 'cpu': [80], 'mem': [80]}14 {
'disk': [80], 'cpu': [50], 'mem': [80]}15 {
'disk': [80], 'cpu': [50], 'mem': [80]}
浅copy

 

1 import copy 2 dic = { 3     "cpu":[80,], 4     "mem":[80,], 5     'disk':[80,] 6 } 7 print('before:',dic) 8 new_dic = copy.deepcopy(dic) 9 new_dic['cpu'][0] = 5010 print(dic)11 print(new_dic)12 输出结果:13 before: {
'cpu': [80], 'mem': [80], 'disk': [80]}14 {
'cpu': [80], 'mem': [80], 'disk': [80]}15 {
'cpu': [50], 'mem': [80], 'disk': [80]}
深copy

 

转载于:https://www.cnblogs.com/mumuzi1990/p/5803941.html

你可能感兴趣的文章
js中几种实用的跨域方法原理详解
查看>>
解决ubuntu 远程连接问题
查看>>
【cocos2d-x 手游研发小技巧(8)通讯的数据压缩与解压 】
查看>>
条款十三 以对象管理资源
查看>>
打印图形
查看>>
《第一行代码》学习笔记7-活动Activity(5)
查看>>
ngx_http_core_module 模块
查看>>
两个常见的oracle索引
查看>>
一位有着工匠精神的博主写的关于IEnumerable接口的详细解析
查看>>
快速排序
查看>>
用sched来定时执行任务(摘抄别人的)
查看>>
Javascript数组Array的forEach方法
查看>>
【Linux】在线求助man page与info page
查看>>
插入排序(Java实现)
查看>>
剑指offer 二叉树中和为某一值得路径
查看>>
LeetCode Distinct Subsequences
查看>>
MySQL中特有的函数If函数
查看>>
安装Python3.6.2报错:zipimport.ZipImportError: can't decompress data; zlib not available
查看>>
【蓝桥杯】入门训练 Fibonacci数列
查看>>
linux grep sed awk
查看>>