python基础之赋值/深copy/浅copy
首先,不管是赋值还是深浅copy,都是针对那些可能会产生变化的值进行区分的,也就是对于数字,字符串来说,区分赋值,深浅copy是毫无意义的。
那么,让我们来对那些可变的像list set dict tuple……来进行探讨。
赋值:

有两种修改n的方法:
1 直接对n赋值

>>> n=[1,2]
>>> g=n
>>> id(n)
140529062430792
>>> id(g)
140529062430792
>>> n=[1,3]
>>> g
[1, 2]
>>> id(n)
140529062430920
>>> id(g)
140529062430792
2 对n的某个元素进行赋值

>>> n=[1,2]
>>> g=n
>>> id(n)
140529062430728
>>> id(g)
140529062430728
>>> n[1]=3
>>> g
[1, 3]
>>> id(n)
140529062430728
>>> id(g)
140529062430728
浅copy

>>> import copy
>>> name=['tong','yang']
>>> n=[1,name]
>>> g=copy.copy(n)
>>> g
[1, ['tong', 'yang']]
>>> id(n)
140529062259976
>>> id(g)
140529062259848
#两个变量(n和g)的地址不相同
当修改n的name的元素时:
>>> name[1]='hua'
>>> n
[1, ['tong', 'hua']]
>>> g
[1, ['tong', 'hua']]
>>> id(n)
140529062259976
>>> id(g)
140529062259848
#n和g的值相同,并且内存地址都没有改变
浅copy只会copy一层,所以在上例中n和g的值都改变了。
深copy

>>> name=['tong','yang']
>>> n=[1,name]
>>> g=copy.deepcopy(n)
>>> g
[1, ['tong', 'yang']] #g的第二个元素已经不是变量name了。
>>> id(n)
140529062430728
>>> id(g)
140529062259976
#n与g的地址不同
当修改name的元素时:
>>> name[1]='hua'
>>> n
[1, ['tong', 'hua']]
>>> g
[1, ['tong', 'yang']]
#n的值变了,但g的值没有变。深copy会copy所有层。
深copy则会copy所有层,并且会将其中的变量的值直接输出取代变量。
本文参考了:http://www.cnblogs.com/wupeiqi/articles/5133343.html
python基础之赋值/深copy/浅copy的更多相关文章
- 2 引用 深copy 浅copy
1. is == 总结 is 是比较两个引用是否指向了同一个对象(引用比较). == 是比较两个对象是否相等. In [1]: a = [11,22,33] In [2]: b = [11,22,33 ...
- 深、浅copy
深.浅copy多用于列表 浅copy:第一层中不变的数据是独立的,可变类型元素指向同一块内存地址 l1 = [1,2,3,["a","b"]] l2 = l1. ...
- python学习笔记-(六)深copy&浅copy
在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用. 1. 赋值 赋值其实只是传递对象引用,引用对象 ...
- 【Python初学】深copy&浅copy
在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用. 1. copy.copy 浅拷贝 只拷贝父对象 ...
- Python 的直接赋值、Deepcopy、Copy的区别
直接赋值: 其实就是对象的引用 浅拷贝(copy): 只拷贝符对象,不会拷贝对象内部的子对象 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象 有图有 ...
- python基础之赋值运算
之前的文章说明了变量的三大组成部分,详细说明了变量名与变量值,但是对于赋值这一块介绍相对较少,今天就来对这一部分进行补充,除了egon老湿所讲之外,本喵还参阅了<python3-cookbook ...
- Python基础之赋值与注释
目录 1. 花式赋值 1.1 链式赋值 1.2 交叉赋值 1.3 交叉赋值(解压缩) 2. 注释 2.1 单行注释 2.2 多行注释 1. 花式赋值 1.1 链式赋值 a = 10 b = 10 c ...
- python基础之02列表/元组/字典/set集合
python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...
- Day2-Python基础2---浅copy、深copy的差别
浅copy 首先我们来看下面一段代码: 1 >>> names = ["maqing"," peilin"," xiaoming&q ...
随机推荐
- (第十一周)Beta—review阶段成员贡献分
项目名:食物链教学工具 组名:奋斗吧兄弟 组长:黄兴 组员:李俞寰.杜桥.栾骄阳.王东涵 个人贡献分=基础分+表现分 基础分=5*5*0.5/5=2.5 成员得分如下: 成员 基础分 表现分 个人贡献 ...
- JAVA第一次实验 ——实验楼
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1352 姓名:潘俊洋 学号:20135230 成绩: 指导教师:娄嘉鹏 ...
- bata7
目录 组员情况 组员1:胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:何宇恒 组员11:刘一好 展示组内最新 ...
- Codeforces Round #284 (Div. 1) C. Array and Operations 二分图最大匹配
题目链接: http://codeforces.com/problemset/problem/498/C C. Array and Operations time limit per test1 se ...
- Hibernate 延迟加载 分析
出处:http://www.ibm.com/developerworks/cn/java/j-lo-hibernatelazy/#icomments Hibernate 的延迟加载(lazy load ...
- ASP.NET MVC 4.0 参考源码索引
http://www.projky.com/asp.netmvc/4.0/Microsoft/AspNet/Mvc/Facebook/FacebookAppSettingKeys.cs.htmlhtt ...
- jQuery之_事件绑定与解绑
使用jQuery实现事件的绑定和解绑 就是所谓的事件操作. 1. 事件绑定(2种): * eventName(function(){}) 绑定对应事件名的监听, 例如:$('#div').click( ...
- 蜗牛慢慢爬 LeetCode 36.Valid Sudoku [Difficulty: Medium]
题目 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...
- Oracle与SQLSERVER 批处理执行 DDL 语句
1. 公司里面的 很多同名的数据库 的一个表都错误的多了一个列 要是每个都用数据库连接工具打开 感觉太废时间了. 比如写个sql命令来执行. 具体方法: Oracle 使用 sqlplus sqlpl ...
- Delphi : keydown与keypress的区别,组合键
Shift 是一个集合变量. type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDoubl ...