copy之深浅拷贝
深浅拷贝
深拷贝 全部复制
浅拷贝 只复制第一层
__author__ = 'Perfect'
# -*- coding: utf-8 -*-
import copy
# copy.copy() #浅拷贝
#
# copy.deepcopy()# 深拷贝
# a = '123' #赋值 a1 = ''
a2 = a1 #通过赋值 得变量,使用的都是同一个内存地址
print(id(a1))#查看a1 的内存地址
print(id(a2))#查看a2 的内存地址
a3 = copy.copy(a1) #浅拷贝,a1 使用的内存地址 与a1 是一样的内存地址
print(id(a3))#查看浅拷贝之后的内存地址是否与a1 一致 a4 = copy.deepcopy(a1) #深拷贝,无论使用的深拷贝还是浅拷贝,在内存地址中 使用的都是同一个内存地址
print(id(a4))#打印深拷贝之后 在内存中使用的内存地址是否与a1 一致
#总结:对于字符串,深浅拷贝 在内存中使用的都是同一个内存地址.
#元祖、列表、字典之间的深浅拷贝
#浅拷贝
n1 = {'k1':"wo","k2":123,"k3":["huzhi",456]}
n2 = n1
print(id(n1))
print(id(n2))
n3 = copy.copy(n1) #定义n3 浅拷贝n1
print(id(n1)) #对比n1 与 n3 的内存地址是否是一样的
print(id(n3)) #对比n1 与 n3 的内存地址是否是一样的
print(id(n1["k1"])) #对比字典中的元素 是否是一样的
print(id(n3['k1']))#对比字典中的元素是否是一样的
#--------------------------
#深拷贝 是 把 字典的所有元素都拷贝
#如果 深拷贝之后 字典的所有元素 内存地址 都不一样,就说明 深拷贝成功了
#总结:深拷贝就是说 这个 字典 有多少层,就会 进行深拷贝,并且 深拷贝后,原字典 和深拷贝之后的内存地址 是 不同的
k9 = copy.deepcopy(n1) #深拷贝
print(id(n1))
print(id(k9))
#深浅拷贝之应用实例
__author__ = 'Perfect'
# -*- coding: utf-8 -*-
#深浅拷贝 应用
import copy
#如果有如下字典
dic = {
"cpu":[80],
"mem":[80],
"disk":[80]
}
#----------------浅拷贝实例--------------- print("更改前字典:",dic)
new_dic = copy.copy(dic)#浅拷贝 赋值给 new_dic
new_dic['cpu'][0] = 50 #修改 赋值后的new_dic 字典 cpu 的值
print("更改后字典:",new_dic) #查看 new_dic的值被修改了
print("更改后字典:",dic) #查看原来字典的cpu 值 也被修改了,这就是浅拷贝
#输出:
# {'cpu': [50], 'mem': [80], 'disk': [80]}
# {'cpu': [50], 'mem': [80], 'disk': [80]}
#----------------深拷贝实例---------------
'''
print("更改前字典:",dic)
Lao_dic = copy.deepcopy(dic)
Lao_dic['cpu'][0] = 100
print("更改之后的:",Lao_dic)
print("原来的字典:",dic)
'''
#输出:
# 原来的字典: {'cpu': [80], 'mem': [80], 'disk': [80]}
# 更改之后的: {'cpu': [100], 'mem': [80], 'disk': [80]}
copy之深浅拷贝的更多相关文章
- iOS边练边学--static(作用域),copy(深浅拷贝)
一.static作用 二.copy
- @proprety数组字典字符串用copy和strong区别(深浅拷贝)
//// @proprety数组字典字符串用copy和strong区别(深浅拷贝).h// IOS笔记//// /* _proprety________copy_strong_________h ...
- 关于:1.指针与对象;2.深浅拷贝(复制);3.可变与不可变对象;4.copy与mutableCopy的一些理解
最近对深浅拷贝(复制)做了一些研究,在此将自己的理解写下来,希望对大家有所帮助.本人尚处在摸索阶段,希望各位予以指正. 本文包括如下方向的探索: 1.指针与对象: 2.深/浅拷贝(复制): 3.可变/ ...
- 深浅拷贝的应用-copy、mutableCopy
ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController //如果想让li ...
- 深浅拷贝(copy)
目录 copy 模块 1.拷贝(赋值) 1). x为不可变数据类型 2). x为可变数据类型 3). 可变数据类型(比如列表)内,既有不可变元素,又有容器类型可变元素(比如列表) 2.浅拷贝 3.深拷 ...
- iOS Copy 和 MutableCopy的区别 深浅拷贝的区别-供参考
概述 对于系统的非容器类对象,对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝).如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的. 对于 ...
- Python 从零学起(纯基础) 笔记 之 深浅拷贝
深浅拷贝 1. import copy#浅拷贝copy.copy()#深拷贝copy.deepcopy()#赋值 = 2. 对于数字和字符串而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个 ...
- python——赋值与深浅拷贝
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...
- Python中的深浅拷贝
1.什么是深浅拷贝? python中一切皆对象,python中的数字.字符串.元组等,如果存放在了内存中,这部分内存里面的内容是不会改变的,但是也有情况,内存中存放了可变对象,比如说列表和字典,他们的 ...
随机推荐
- Hadoop记录-HDFS配额Quota
设置文件数配额 hdfs dfsadmin -setQuota <N> <directory>...<directory> 例如:设置目录下的文件总数为1000个h ...
- 极光推送API
https://github.com/jpush/jpush-api-ruby-client/blob/master/docs/Guides.md#%E6%9B%B4%E6%96%B0%E8%AE%B ...
- Ubuntu修改Apache默认Web端口
改成你要的端口,默认为80,这里我改成了8080,https改成了444,保存之后寻找000/default.conf并修改成和ports.conf文件一样的http端口,然后重启Apache服务器即 ...
- HDU 5984 数学期望
对长为L的棒子随机取一点分割两部分,抛弃左边一部分,重复过程,直到长度小于d,问操作次数的期望. 区域赛的题,比较基础的概率论,我记得教材上有道很像的题,对1/len积分,$ln(L)-ln(d)+1 ...
- VS Code使用 Vue工程配置 eslint
首先确保VS Code 安装了 Vetur 和 Eslint 插件. VS CODE :文件 =>首选项 => 设置 (有3个点 或 {} 这样的大括号,打开setting.json) ...
- 【十四】jvm 性能调优实例
实例1: POI Excel 导出 Excel对象很大,多人同时登录系统导出Excel的话,就会有多个大Excel对象到老年代,这是老年代需要回收,系统可能会卡顿. jvm堆内存设置的越大,Full ...
- Hero Patterns - 聚合各种 SVG 背景纹理素材的网站
Hero Patterns 是一个聚合了各种 SVG 背景纹理素材的网站,提供的多样的素材可以给你的网站带去特色. SVG 是一种分辨率无关的图形(矢量图形).这意味着它在任何类型的屏幕都不会遭受任何 ...
- Tomcat下载,及环境变量配置
首先,介绍一下Tomcat: Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公 ...
- JSON CSRF新姿势
以前做渗透测试,遇到过很多次POST数据为JSON数据的CSRF,一直没有搞定,最近发现一个新姿势, 本文作者:Mannix@安全文库 微信公众号:安全文库 测试的时候,当应用程序验证了Cont ...
- luogu 4047 部落划分 二分答案
二分距离判断是否满足k个部落,注意double类型精度,可使用不开方,最终再开 #include<bits/stdc++.h> #define rep(i,x,y) for(registe ...