python基础学习笔记——深浅拷贝
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
lst1 = [ "⾦⽑狮王" , "紫衫⻰王" , "⽩眉鹰王" , "⻘翼蝠王" ] lst2 = lst1 print (lst1) print (lst2) lst1.append( "杨逍" ) print (lst1) print (lst2) 结果: [ '⾦⽑狮王' , '紫衫⻰王' , '⽩眉鹰王' , '⻘翼蝠王' , '杨逍' ] [ '⾦⽑狮王' , '紫衫⻰王' , '⽩眉鹰王' , '⻘翼蝠王' , '杨逍' ] dic1 = { "id" : 123 , "name" : "谢逊" } dic2 = dic1 print (dic1) print (dic2) dic1[ 'name' ] = "范瑶" print (dic1) print (dic2) 结果: { 'id' : 123 , 'name' : '谢逊' } { 'id' : 123 , 'name' : '谢逊' } { 'id' : 123 , 'name' : '范瑶' } { 'id' : 123 , 'name' : '范瑶' } |
对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量. 并不是复制⼀份内容. 所以. lst1的内存指向和lst2是⼀样的. lst1改变了, lst2也发⽣了改变
浅拷⻉
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
lst1 = [ "何炅" , "杜海涛" , "周渝⺠" ] lst2 = lst1.copy() lst1.append( "李嘉诚" ) print (lst1) print (lst2) print ( id (lst1), id (lst2)) 结果: 两个lst完全不⼀样. 内存地址和内容也不⼀样. 发现实现了内存的拷⻉ lst1 = [ "何炅" , "杜海涛" , "周渝⺠" , [ "麻花藤" , "⻢芸" , "周笔畅" ]] lst2 = lst1.copy() lst1[ 3 ].append( "⽆敌是多磨寂寞" ) print (lst1) print (lst2) print ( id (lst1[ 3 ]), id (lst2[ 3 ])) 结果: [ '何炅' , '杜海涛' , '周渝⺠' , [ '麻花藤' , '⻢芸' , '周笔畅' , '⽆敌是多磨寂寞' ]] [ '何炅' , '杜海涛' , '周渝⺠' , [ '麻花藤' , '⻢芸' , '周笔畅' , '⽆敌是多磨寂寞' ]] 4417248328 4417248328 |
浅拷⻉. 只会拷⻉第⼀层. 第⼆层的内容不会拷⻉. 所以被称为浅拷⻉
深拷⻉
1
2
3
4
5
6
7
8
9
10
11
|
import copy lst1 = [ "何炅" , "杜海涛" , "周渝⺠" , [ "麻花藤" , "⻢芸" , "周笔畅" ]] lst2 = copy.deepcopy(lst1) lst1[ 3 ].append( "⽆敌是多磨寂寞" ) print (lst1) print (lst2) print ( id (lst1[ 3 ]), id (lst2[ 3 ])) 结果: [ '何炅' , '杜海涛' , '周渝⺠' , [ '麻花藤' , '⻢芸' , '周笔畅' , '⽆敌是多磨寂寞' ]] [ '何炅' , '杜海涛' , '周渝⺠' , [ '麻花藤' , '⻢芸' , '周笔畅' ]] 4447221448 4447233800 |
都不⼀样了.
深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产⽣⼀个改变另⼀个跟着 改变的问题 补充⼀个知识点:
最后我们来看⼀个⾯试题:
1
2
3
|
a = [ 1 , 2 ] a[ 1 ] = a print (a[ 1 ])
|
python基础学习笔记——深浅拷贝的更多相关文章
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- python 基础学习笔记(1)
声明: 本人是在校学生,自学python,也是刚刚开始学习,写博客纯属为了让自己整理知识点和关键内容,当然也希望可以通过我都博客来提醒一些零基础学习python的人们.若有什么不对,请大家及时指出, ...
- Python 基础学习笔记(超详细版)
1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...
- Python基础入门知识点——深浅拷贝
深浅拷贝 对象引用.浅拷贝.深拷贝(拓展.难点.重点) Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果 其实这个是由于共享内存导致的结果 拷贝 ...
- Python基础学习笔记(十三)异常
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-exceptions.html Python用异常对象(excep ...
- Python基础学习笔记(十二)文件I/O
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...
- Python基础学习笔记(十一)函数、模块与包
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...
- Python基础学习笔记(十)日期Calendar和时间Timer
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...
- Python基础学习笔记(九)常用数据类型转换函数
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-variable-types.html 3. http://www ...
随机推荐
- sgu316Kalevich Strikes Back(线段树+扫描线)
做法:总体想法是求出一个矩形的面积以及它所包含的矩形,然后用自己的面积减掉所包含的.主要问题是怎样求解它所包含的矩形. 因为是没有相交点的,可以利用扫描线的方法去做,类似染色,当前段如果是x色,也就是 ...
- 代码review
对于代码review个人也有些小小的看法: 1.首先我觉得我们所有开发人员要弄明白 现在Code Review 的目的 ,凡事不弄明白目的,无法做好完成一件事情,个人觉得有以下一些目的: a)可以在项 ...
- JS中函数与事件
一.函数: 1.函数就是一个工具,通过一小段代码,完成某个功能: 2.函数的定义: function 函数名(){ ..... } 或者 : var 函数名 = function(){ ...... ...
- log4j日志工具类
/** * log4j日志Util */public class LogUtil { private static Logger logger=null; static{ StackTraceElem ...
- 洛谷P4017 最大食物链计数
拓扑排序板子题 #include <iostream> #include <cstdio> #include <cstring> #include <queu ...
- C#实现MD5WITHRSA签名
这是很久以前的写的一篇博客了,今天把他重新找出来整理一下发布到博客园 当时对接银联的时候搞了很久都没搞出来,后来一个偶然的机会发现类似的一个代码参考了一下终于弄好了 这段代码主要是实现了C#服务端对接 ...
- gcc&g++
原文章 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序:后缀为.cpp的,两者都会认为是c++程序,注 ...
- Windows系统下如何优化Android Studio
Android Studio将是Android开发大势所趋. 安装Android Studio时需注意的细节: · 找到安装目录bin目录下idea.properties 最后一行加入: dis ...
- (五)maven之外置maven
eclipse外置maven eclipse内置的maven插件是固定版本,如果要用其他版本的maven,可以使用外置maven. ① 在菜单栏上点击“Windows”à“Preferences ...
- Caused by: java.lang.NoClassDefFoundError: com/sun/tools/javac/util/List at
折腾了一下的时间,都没有找到解决的方案,在网上搜了一下答案都是让清理编译环境和重新打包之类的.就这样折腾一下,还没有解决问题.之所以会抛出找不到类的问题,需要排查你使用这个包的类是否存在,存在之后 查 ...