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" ...
随机推荐
- java--时间日期用法
转载大神 https://www.cnblogs.com/Mr-Lyu/p/5736152.html https://blog.csdn.net/yf198708/article/details/51 ...
- VS Code开发调试.NET Core 2.0
VS Code开发调试.NET Core 2.0 使用VS Code 从零开始开发调试.NET Core 2.0.无需安装VS 2017 15.3+即可开发调试.NET Core 2.0应用. VS ...
- RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例
你是否听说过或者使用过队列? 你是否听说过或者使用过消息队列? 你是否听说过或者使用过RabbitMQ? 提到这几个词,用过的人,也许觉得很简单,没用过的人,也许觉得很复杂,至少在我没使用消息队列之前 ...
- Jquery3
动画 动画动画效果一:show(时间),hide(时间)说明:时间的单位为毫秒方法toggle(时间):使用动画切换显示与隐藏动画效果二:slideDown(时间),slideUp(时间)切换:sli ...
- 【Unity3D】资源对象、预设、查找对象、组合模式等知识点
1.解释对象与资源区别于联系,根据官方案例,分别总结资源和对象组织的规则/规律. 下载并查看了Adam和Survival Shooter tutorial两个官方资源案例,这些案例作为资源,可以 ...
- 3D图形引擎决定三维产业差异化
从2009年中国3D产业初步兴起开始,短短几年间中国的3D技术得到了飞速的发展,3D打印机.3D投影仪.Web3D.虚拟现实.场景漫游等等产业应用应运而生,设备制造商和内容提供商都开始发挥自主创新的优 ...
- iOS - NSString 封装
在实际项目开发过程中,发现字符串使用频率还是非常高的,NSString提供了很多相关的API,但是在开发过程中发现很多业务功能都是相同的.因此根据在开发过程中遇到的字符串使用场景,进行了简单封装.具体 ...
- ArcServer10.1系列产品之ArcGIS Web Adaptor (IIS)
1.关于 ArcGIS Web Adaptor 通过 ArcGIS Web Adaptor,可以将 ArcGIS for Server 与您现有的 Web 服务器进行集成.ArcGIS Web Ada ...
- Python3+Selenium3+webdriver学习笔记11(cookie处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...
- SQL Server 查询性能优化——创建索引原则
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...