深浅拷贝
深拷贝 全部复制
浅拷贝 只复制第一层

__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之深浅拷贝的更多相关文章

  1. iOS边练边学--static(作用域),copy(深浅拷贝)

    一.static作用 二.copy

  2. @proprety数组字典字符串用copy和strong区别(深浅拷贝)

    ////  @proprety数组字典字符串用copy和strong区别(深浅拷贝).h//  IOS笔记//// /* _proprety________copy_strong_________h ...

  3. 关于:1.指针与对象;2.深浅拷贝(复制);3.可变与不可变对象;4.copy与mutableCopy的一些理解

    最近对深浅拷贝(复制)做了一些研究,在此将自己的理解写下来,希望对大家有所帮助.本人尚处在摸索阶段,希望各位予以指正. 本文包括如下方向的探索: 1.指针与对象: 2.深/浅拷贝(复制): 3.可变/ ...

  4. 深浅拷贝的应用-copy、mutableCopy

    ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController //如果想让li ...

  5. 深浅拷贝(copy)

    目录 copy 模块 1.拷贝(赋值) 1). x为不可变数据类型 2). x为可变数据类型 3). 可变数据类型(比如列表)内,既有不可变元素,又有容器类型可变元素(比如列表) 2.浅拷贝 3.深拷 ...

  6. iOS Copy 和 MutableCopy的区别 深浅拷贝的区别-供参考

    概述 对于系统的非容器类对象,对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝).如果是对可变对象复制,都是深拷贝,但是copy返回的对象是不可变的. 对于 ...

  7. Python 从零学起(纯基础) 笔记 之 深浅拷贝

    深浅拷贝 1. import  copy#浅拷贝copy.copy()#深拷贝copy.deepcopy()#赋值 = 2.   对于数字和字符串而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个 ...

  8. python——赋值与深浅拷贝

    初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...

  9. Python中的深浅拷贝

    1.什么是深浅拷贝? python中一切皆对象,python中的数字.字符串.元组等,如果存放在了内存中,这部分内存里面的内容是不会改变的,但是也有情况,内存中存放了可变对象,比如说列表和字典,他们的 ...

随机推荐

  1. React 记录(2)

    入门教程:https://www.reactjscn.com/tutorial/tutorial.html 慢慢学习:对照教程文档,逐句猜解,截图 React官网:https://reactjs.or ...

  2. npm与yarn命令对比

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 Yarn 是为了弥补 npm 的一些缺陷而出现的(比如,npm install时候会 ...

  3. Silverlight网页打开后马上崩溃,“白屏”,而且毫无提示

    如题,出现白屏的问题 在Application_UnhandledException函数内,跟踪异常e的提示信息,可以了解到如下信息: at System.ComponentModel.AsyncCo ...

  4. WEUI Picker不切换数据

    /*js部分,myPicker是设备号input的ID*/ $('#myPicker').change(function () { /*选择设备号后,根据当前设备号设置不同的摄像头选项,具体判断逻辑根 ...

  5. error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

    解决方案 1. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载twisted对应版本的whl文件(我的Twisted‑17.5.0‑cp36 ...

  6. UVAlive 6697 Homework Evaluation

    借鉴了别人的博客啊,自己写写给以后的自己看吧 给出两个字符串,用第二个字符串去匹配第一个字符串,可以对第二个字符串进行删除或插入操作,一位匹配成功得8分失败-5分,如果插入或删除,对于连续插入或删除m ...

  7. 常用SQL语句大全总结

    出处:http://www.cnblogs.com/0351jiazhuang/p/4530366.html SQL是(Structured Query Language)结构化查询语言的简称,下面赵 ...

  8. 【LeetCode】108. Convert Sorted Array to Binary Search Tree

    Problem: Given an array where elements are sorted in ascending order, convert it to a height balance ...

  9. sqlserver 循环取时间

    declare @str date; set @str='2015-01-08'; while DATEDIFF([day], @str , '2015-02-01')>0 begin sele ...

  10. oracle查看表空间数据文件使用情况

    -- 查看表空间数据文件使用情况 select a.*, round(a.usedgb/a.maxgb*100) || '%' usedPer from ( select t.TABLESPACE_N ...