python列表中的深浅copy
In [1]: a = 1 In [2]: b = a In [3]: a
Out[3]: 1 In [4]: b
Out[4]: 1 In [5]: id(a)
Out[5]: 4452948992 In [6]: id(b)
Out[6]: 4452948992 In [7]: id(1)
Out[7]: 4452948992 In [8]: a = 4 In [9]: b
Out[9]: 1 In [10]: id(a)
Out[10]: 4452949088 In [11]: id(b)
Out[11]: 4452948992 In [12]: id(1)
Out[12]: 4452948992
In [1]: li = [1,2,3] In [2]: n = li In [3]: li
Out[3]: [1, 2, 3] In [4]: n
Out[4]: [1, 2, 3] In [5]: li[0] = 'a' In [6]: li
Out[6]: ['a', 2, 3] In [7]: n
Out[7]: ['a', 2, 3] In [8]: id(li)
Out[8]: 4342626376 In [9]: id(n)
Out[9]: 4342626376 In [10]: id([1,2,3])
Out[10]: 4440762824
可以看出,在列表中,n是指向了li的内存地址, 不是列表[1,2,3]了,所以li的值变化的话,n也跟着变化。可以想象成li和n都指向了一个水杯,水杯里有三块白糖,把其中一块换成了黑糖,
那不管是用li还是n,水杯里现在都是有两块白糖和一块黑糖。 2.浅copy
In [1]: li2 = [1,2,3,['alex',27]] In [2]: n2 = li2.copy() In [3]: li2
Out[3]: [1, 2, 3, ['alex', 27]] In [4]: n2
Out[4]: [1, 2, 3, ['alex', 27]] In [5]: id(li2),id(n2)
Out[6]: (4536317192, 4536271560) In [6]: li2[0] = 'a' In [7]: li2
Out[7]: ['a', 2, 3, ['alex', 27]] In [8]: n2
Out[8]: [1, 2, 3, ['alex', 27]] In [9]: id(li2[0]),id(n2[0])
Out[9]: (4509371784, 4506651648)
In [10]: li2[3][0] = '帅哥' In [11]: li2
Out[11]: ['a', 2, 3, ['帅哥', 27]] In [12]: n2
Out[12]: [1, 2, 3, ['帅哥', 27]] In [13]: id(li2[3]),id(n2[3])
Out[13]: (4536316872, 4536316872) In [15]: id(li2[3][0])
Out[15]: 4536362680 # 和li2[3]的内存地址不一样
In [1]: import copy In [2]: li3 = [1,2,3,['alex',27]] In [3]: n3 = copy.deepcopy(li3) In [4]: li3
Out[4]: [1, 2, 3, ['alex', 27]] In [5]: n3
Out[5]: [1, 2, 3, ['alex', 27]] In [6]: li3[3][0] = '帅哥' In [7]: li3
Out[7]: [1, 2, 3, ['帅哥', 27]] In [8]: n3
Out[8]: [1, 2, 3, ['alex', 27]]
python列表中的深浅copy的更多相关文章
- 如何在python列表中查找某个元素的索引
如何在python列表中查找某个元素的索引 2019-03-15 百度上回复别人的问题,几种方式的回答: 1) print('*'*15,'想找出里面有重复数据的索引值','*'*15) listA ...
- python学习笔记三 深浅copy,扩展数据类型(基础篇)
深浅copy以及赋值 对于字符串和数字而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy n1 = #n1 = 'hahahaha' #赋值n2 = n1#浅co ...
- python基础(三)编码,深浅copy
编码,深浅copy encode,decode在python2中使用的一些迷糊,python3中更容易理解 要理解encode和decode,首先我们要明白编码,字符和二进制的相关概念,简单来说,计算 ...
- 总结day6 ---- set集合,基本类型的相互转化,编码,数据类型总结,循环时候不要动列表或者字典,深浅copy
python小数据池,代码块的最详细.深入剖析 一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,比如你利用id ...
- python之集合,深浅copy
一. 集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...
- python 列表中[ ]中冒号‘:’的作用
中括号[ ]:用于定义列表或引用列表.数组.字符串及元组中元素位置 list1 = [, ] list2 = [, , , , , , ] print ] print :] 冒号: 用于定义分片. ...
- python列表中的pop函数
再python的列表中,有许多的内置方法,而在这里我主要向大家介绍一下pop函数. pop函数主要是用于删除列表中的数据.而其删除值时会返回删除的值.如果没有参数传入时, 则会默认认为删除列表的最后一 ...
- python列表中中文编码的问题
在python2列表中,有时候,想打印一个列表,会出现如下显示: 这个是由于: print一个对象,是输出其“为了给人(最终用户)阅读”而设计的输出形式,那么字符串中的转义字符需要转出来,而且 也不要 ...
- Python列表中的字典按照该字典下的键值进行排序
列表中的字典按照该字典下的键值进行排序 这算是排序中比较复杂的一种情况吧,多重嵌套,按照某种规则进行排序.如下面这个json(注:这里这是该列表中的一个项): [ { "stat" ...
随机推荐
- 算法设计与分析-HomeWork
ex1(p20) 代码如下: import random def Darts(n): k=0 i=1 while i<=n: x=random.uniform(0,1) #y=random.un ...
- 安卓第四次作业——简单校园二手交易APP
一.项目团队 团队成员 姓名:汤文涛 学号:1600802129 班级:计算机164班 博客地址:https://www.cnblogs.com/taotao01/ 姓名:杨圣豪 学号:1600802 ...
- linux批量替换指定文件夹中所有文件的指定内容
命令:sed -i "s#https#http#g" `grep http -rl VEROMODA` 功能:用来替换当前目录VEROMODA文件夹及子文件夹中所有文件中的http ...
- bzoj 2301: [HAOI2011]Problem b mobius反演 RE
http://www.lydsy.com/JudgeOnline/problem.php?id=2301 设f(i)为在区间[1, n]和区间[1, m]中,gcd(x, y) = i的个数. 设F( ...
- (转)生产环境常见的HTTP状态码列表(老男孩整理)
生产环境常见的HTTP状态码列表(老男孩整理) 原文:http://blog.51cto.com/oldboy/716294 ##################################### ...
- 把本地项目上传到github 不使用eclipse
https://blog.csdn.net/m0_37725003/article/details/80904824
- setTimeout() 实现程序每隔一段时间自动执行
定义和用法 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 语法 setTimeout(code,millisec) 参数 描述 code 必需.要调用的函数后要执行的 Ja ...
- D. Statistics of Recompressing Videos
D. Statistics of Recompressing Videos time limit per test 3 seconds memory limit per test 256 megaby ...
- 利用Vagrant and VirtualBox搭建core os环境
利用Vagrant and VirtualBox搭建core os环境 系统环境 ubuntu 14.04 x64 vagrant 1.7.4 virtualbox 4.3.10 git 1.9.1 ...
- Author: Jan Odvarko, www.janodvarko.cz
/* * Author: Jan Odvarko, www.janodvarko.cz */ FBL.ns(function() { with (FBL) { function HelloWorld ...