python中的赋值与拷贝(浅拷贝与深拷贝)
1.赋值与拷贝
直接赋值(b=a)是传引用,b改动a也会改动.
a = [1, 2, 3, 4]
b = a
b[1] = 999
print(a, b)
#[1, 999, 3, 4] [1, 999, 3, 4]
b=a.copy()或者b=a[:]是传值,b改动不影响a.
a = [1, 2, 3, 4]
b = a.copy()
b[1] = 999
print(a, b)
#[1, 2, 3, 4] [1, 999, 3, 4]
a = [1, 2, 3, 4]
b = a[:]
b[1] = 999
print(a, b)
#[1, 2, 3, 4] [1, 999, 3, 4]
2.浅拷贝与深拷贝
b=a.copy()和b=a[:]都是浅拷贝,也就是只有第一层是拷贝(传值),更深的层还是传引用.
copy模块的deepcopy函数可以实现深拷贝(每一层都是传值).
import copy a = [1, 2, 3, [1, 2, 3]]
c = copy.deepcopy(a)
c[3][1] = 999
print(a, c)
#[1, 2, 3, [1, 2, 3]] [1, 2, 3, [1, 999, 3]] b = a[:]
b[3][1] = 999
print(a, b)
#[1, 2, 3, [1, 999, 3]] [1, 2, 3, [1, 999, 3]]
python中的赋值与拷贝(浅拷贝与深拷贝)的更多相关文章
- Python中的赋值(复制)、浅拷贝、深拷贝之间的区别
1.赋值: 只是复制了新对象的引用,不会开辟新的内存空间. 2.浅拷贝: 创建新对象,其内容是原对象的引用. 浅拷贝有三种形式:切片操作,工厂函数,copy模块中的copy函数. 如: ...
- Python中的赋值和拷贝
赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c= ...
- Python 中的赋值、拷贝、引用
在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域. 如图所示,当改变一个变量的值,另一个的值也会跟着改变.也就是浅拷贝. 若要实 ...
- Python3中的赋值操作、浅拷贝与深拷贝
一:关于赋值操作与浅拷贝 1.变量的赋值 首先以一个例子来说明一下:定义变量a = 1,使b = a.开始的情况下打印a与b都为1(显而易见,哈哈) 但是接下来,我们做一下改动,令 a = 222,再 ...
- python中的“赋值与深浅拷贝”
Python中,赋值与拷贝(深/浅拷贝)之间是有差异的,这主要源于数据在内存中的存放问题,本文将对此加以探讨. 1 赋值(添加名字) 赋值不会改变内存中数据存放状态,比如在内存中存在一个名为data的 ...
- 【转】Python中的赋值、浅拷贝、深拷贝介绍
这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下 和很多语言一样,Python中 ...
- Python中的赋值、深拷贝与浅拷贝(内存地址)
Python中的赋值.深拷贝与浅拷贝(内存地址) 1.python中的可变对象与不可变对象 (1) 可变对象:dict,list def dict_test(): a = {} b = a print ...
- python中的赋值操作和复制操作
之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4 ...
- python中的赋值操作
参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作“=” ...
随机推荐
- python 的两个模块xlwt,xlrd,写入和读取Excel数据
http://www.cnblogs.com/fireme/p/3887284.html 这上面写的很全,不过我只需要简单的读和写的操作就ok了,下面是我写的读和写入Excel操作 读取Excel数据 ...
- 转:[NHibernate]视图处理
转自:http://www.cnblogs.com/wolf-sun/p/4082899.html 目录 写在前面 文档与系列文章 视图 一个例子 总结 写在前面 前面的文章主要讲了对物理数据表的操作 ...
- ThinkPHP框架基础知识三
一.JS文件与Css文件存放位置 其实JS与Css文件放在任意位置都可以找到,只要路径正确就行. 在TP框架中我们访问的所有文件都要走入口文件index.php,相当于访问的是index.php页面. ...
- PAT 天梯赛 L1-014. 简单题 【水】
题目链接 https://www.patest.cn/contests/gplt/L1-014 AC代码 #include <iostream> #include <cstdio&g ...
- html使用笔记
1. HTML 表单内容设置最大长度:<input type="text" name="fullname" maxlength="85&quo ...
- NET中IL指令详解
名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...
- CSS3:布局display属性的flex(弹性布局)
CSS3:布局display属性的flex(弹性布局) 一.简介 Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.设为Flex布局以后, ...
- SQL注入导图
本图来自信安之路学生渗透小组@辽宁-web-TwoDog, 博主觉得这张图画的很好,所以贴在这里提供参考!
- spring security使用哈希加密的密码
之前我们都是使用MD5 Md5PasswordEncoder 或者SHA ShaPasswordEncoder 的哈希算法进行密码加密,在spring security中依然使用只要指定使用自定义加密 ...
- HTML中a标签的锚点
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...