python 基础之浅拷贝与深拷贝
浅拷贝与深拷贝
1.普通赋值
例1:
a = 15
b = a
a = 16
print(b)
#例2:
lst1 = [1,2,3]
lst2 = lst1
lst1.append(4)
print(lst2)
#这个情况是lst1和lst2地址相同,元素相同
2.浅拷贝
#只拷贝以及所有元素
#例:
#法一:直接.copy()拷贝
lst1 = [1,2,3]
#lst2 = lst1
lst2 = lst1.copy()
print(lst2)
lst1.append(4)
print(lst2)
print(lst1)
#法二:使用模块进行浅拷贝
import copy
#copy 模块下面有一个同名的copy方法
lst1 = [1,2,3]
lst2 = copy.copy(lst1)
lst1.append(5)
print(lst2)
3.深拷贝
将所有级别的元素统统独立拷贝一份
"每一级的所有元素统统拷贝一份,不沿用以前的数据"
#import引入copy复制模块 deepcopy深拷贝 copy浅拷贝
import copy #copy deepcopy()
lstvar = [1,2,3,[4,5,6]]
lstvar2 = copy.deepcopy(lstvar)
lstvar[-1].append(7)
print(lstvar2)
print(lstvar)
dictvar = {'a':[1,2],"b":{"c":123,"d":[7,8,9]}}
dict2 = copy.deepcopy(dictvar)
dictvar["b"]["d"].extend("ab")
print(dict2)
lstvar = [1,2,3,[4,5]]
lst2 = copy.copy(lstvar)
print(lst2)
lstvar.append(66)
print(lst2)
#在浅拷贝中把字符串这样列表的当着一级容器数据
lstvar = [1,2,3,"45"]
lstvar2 = copy.copy(lstvar)
# lstvar[-1] = 1234 #
# print(lstvar)
# print(lstvar2)
#赋值与浅拷贝与深拷贝内存关系

浅拷贝只有一级数据时独立的,二级的数据时相同的地址的
python 基础之浅拷贝与深拷贝的更多相关文章
- python 进阶篇 浅拷贝与深拷贝
阐述引用.浅拷贝和深拷贝前,首先需要要了解 Python 的世界里,一切皆对象,每个对象各包含一个 idendity.type 和 value. 引用(Reference) >>> ...
- Python 引用、浅拷贝、深拷贝解析
引用 Python是动态数据类型的语言,故在对变量进行赋值时是不用制定变量类型的. 或者说,你可以把变量赋值的过程,当作是贴一个标签,去引用该数据. 看下面的例子: In [54]: a=4 In [ ...
- python赋值、浅拷贝、深拷贝区别
在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念,你的代码就可能出现一些问题.所以,在这里按个人的理解谈谈它们之间的区别. 一.赋值(assignment) 在<Py ...
- Python 赋值、浅拷贝和深拷贝
初学Python,和C++还是有许多不同.直接赋值.浅拷贝和深拷贝,这三种拷贝对象的操作之间还是有许多的区别.Python语言的版本为2.7,在Pycharm中进行实验. 一.直接赋值 用下面的代码来 ...
- Python赋值、浅拷贝、深拷贝
一.赋值(assignment) >>> a = [1, 2, 3] >>> b = a >>> print(id(a), id(b), sep= ...
- python中的浅拷贝,深拷贝
直接引用,间接引用 # 1.列表存储的是索引对应值的内存地址,值会单独的开辟一个内存空间 list = ["a","b"] 内存里面存储的就是list[0],l ...
- python中的浅拷贝和深拷贝
1.赋值语句 a = 'abc' b = a print id(a) print id(b) # id(a):29283464 # id(b):29283464 通过简单的复制,我们可以看到,a b其 ...
- 16.python中的浅拷贝和深拷贝
在讲什么是深浅拷贝之前,我们先来看这样一个现象: a = ['scolia', 123, [], ] b = a[:] b[2].append(666) print a print b
- Python核心编程--浅拷贝与深拷贝
一.问题引出浅拷贝 首先看下面代码的执行情况: a = [1, 2, 3] print('a = %s' % a) # a = [1, 2, 3] b = a print('b = %s' % b) ...
随机推荐
- AC自动机讲解超详细
begin:2019/5/2 感谢大家支持! AC自动机详细讲解 AC自动机真是个好东西!之前学KMP被Next指针搞晕了,所以咕了许久都不敢开AC自动机,近期学完之后,发现AC自动机并不是很难,特别 ...
- mybatis中条件查询大于等于和小于等于写法
原符号 < <= > >= & ' "替换符号 < <= > >= & ' " createDat ...
- 在linux环境下python与C++混合编程
参考:在linux环境下编译C++ 程序 linux下python3调用c代码或者python3调用c++代码 https://blog.csdn.net/u013179327/article/det ...
- robot用例执行常用命令
执行命令 执行一个用例 robot -t “testcase_name“ data_test.robot 按用例文件执行 robot data_test.robot或者 robot --suite “ ...
- Java面向对象private
1. 类 package cn.itcast.day06.demo03; /* 对于基本类型当中的boolean值,Getter方法一定要写成isXxx的形式,而setXxx规则不变. */ publ ...
- 卫哲VS投行女,秋后算账是阿里的企业文化吗?
编辑 | 于斌 出品 | 于见(mpyujian) 提到马云,大家都会想到淘宝,阿里,也都期待阿里巴巴的马云爸爸能够给我们免单,从而省去我们每天为钱烦恼的后顾之忧.虽然今天要吃的瓜是有关阿里的,但是并 ...
- firefox插件hostadmin自由切换host
在Mac下firefox插件hostadmin切换host,遇到的第一个问题就是提示权限不足,解决办法,在终端输入以下命令即可: sudo chmod og+w /etc/hosts chmod修改权 ...
- webpack中使用babel
step one: https://babeljs.io/setup Choose your tool (try CLI) select webpack Step two: npm install - ...
- Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类
第四部分第11章,接口:从协议到抽象基类(重点讲抽象基类) 接口就是实现特定角色的方法集合. 严格来说,协议是非正式的接口(只由文档约束),正式接口会施加限制(抽象基类对接口一致性的强制). 在Pyt ...
- Linux 笔记:虚拟控制台
登录后按Alt+F2键这时又可以看到"login:"提示符,这个就是第二个虚拟控制台. 一般新安装的Linux有四个虚拟控制台,可以用Alt+F1~Alt+F4来访问. 虚拟控制台 ...