【python】copy浅拷贝和deepcopy深拷贝
赋值: 其实就是对象的引用(别名),b = a: 赋值引用,a 和 b 都指向同一个对象。
浅拷贝(copy.copy): 只拷贝父对象,不会拷贝对象的内部的子对象。
b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
深拷贝(copy.deepcopy) 深拷贝 拷贝对象及其子对象
一个很好的例子:b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
注意事项:这里面说的拷贝是指只要拷贝了就保持两个对象的独立了
"""赋值示例"""
a = {"a": [1,2,3],"b":"test"}
b=a
a["a"][0]=2
a["b"]="paulwinflo"
print(a)
#>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
print(b)
#>>>{'a': [2, 2, 3], 'b': 'paulwinflo'} """浅拷贝示例"""
a = {"a": [1,2,3],"b":"test"}
b=a.copy()
a["a"][0]=2
a["b"]="paulwinflo"
print(a)
#>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
print(b)
#>>>{'a': [2, 2, 3], 'b': 'test'} #因为浅拷贝是对父对象的拷贝,也就是新的父对象保持独立,不受老的父对象影响 """深拷贝示例"""
import copy
a = {"a": [1,2,3],"b":"test"}
b=copy.deepcopy(a)
a["a"][0]=2
a["b"]="paulwinflo"
print(a)
#>>>{'a': [2, 2, 3], 'b': 'paulwinflo'}
print(b)
#>>>{'a': [1, 2, 3], 'b': 'test'} #因为深拷贝是对父对象和子对象的拷贝,也就是新的父对象和子对象都会保持独立,不受老的影响
【python】copy浅拷贝和deepcopy深拷贝的更多相关文章
- Python copy and deepcopy
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...
- python的浅拷贝和深拷贝
python对象有两种拷贝的形式:浅拷贝和深拷贝. 在<python核心编程>中看到对这两种拷贝的分析,觉得十分收益,所以记录在此. id()方法:id()方法可以查看某个对象的ID,类似 ...
- Python copy对象(copy与deepcopy)
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...
- python:浅拷贝与深拷贝
1,“相等”与“相同” 我们先赋值三个变量a, b, c: a = [1, 2, [1, 2]] b = [1, 2, [1, 2]] c = a 判断一下‘相等’: a == b 返回 True ...
- Python的浅拷贝与深拷贝
定义: =号浅拷贝:在Python中对象的赋值其实就是对象的引用.copy了之后两个仍然是同一个东西.那么他们内部的元素自然也是一样的,对其中一个进行修改,另一个也会跟着变> copy()浅拷贝 ...
- 深度解析:python之浅拷贝与深拷贝
深度解析python之浅拷贝与深拷贝 本文包括知识点: 1.copy与deepcopy 2.可变类型与不可变类型 1.copy与deepcopy 在日常python编码过程中,经常会遇见变量的赋值.这 ...
- Python 拓展之详解深拷贝和浅拷贝
正式开始 首先我在这介绍两个新的小知识,要在下面用到.一个是函数 id() ,另一个是运算符 is.id() 函数就是返回对象的内存地址:is 是比较两个变量的对象引用是否指向同一个对象,在这里请不要 ...
- Python中的赋值、深拷贝与浅拷贝(内存地址)
Python中的赋值.深拷贝与浅拷贝(内存地址) 1.python中的可变对象与不可变对象 (1) 可变对象:dict,list def dict_test(): a = {} b = a print ...
- Python 列表浅拷贝与深拷贝
浅拷贝 shallow copy 和深拷贝 deep copy list.copy() 浅拷贝:复制此列表(只复制一层,不会复制深层对象) 等同于 L[:] 举例: 浅拷贝: a = [1.1, 2. ...
随机推荐
- pyculiarity 时间序列(异常流量)异常检测初探——感觉还可以,和Facebook的fbprophet本质上一样
demo: from pyculiarity import detect_ts import matplotlib.pyplot as plt import pandas as pd import m ...
- vue2.0对不同数据类型的显示
- adb命令(笔记)
1.adb shell su 进入root管理员权限(前提是手机已root) 2.chmod 可以修改文件夹的权限: $ adb shell $ su # chmod -R 777 /data/ ...
- L1-051 打折
去商场淘打折商品时,计算打折以后的价钱是件颇费脑子的事情.例如原价 ¥988,标明打 7 折,则折扣价应该是 ¥988 x 70% = ¥691.60.本题就请你写个程序替客户计算折扣价. 输入格式: ...
- Zend Studio导致PHP插入数据库中文乱码【坑了个爹】
用PHP往数据库里面插入数据,在执行INSERT语句前已经执行过 SET NAMES UTF8命令,MySql数据库的编码也确定是UTF8,然而插入中文的结果还是乱码. 找来找去,最后发现原来是用的I ...
- Word文档加密小技巧
文件菜单设置: 1.打开需要加密的Word文档. 2.选“文件”的“另存为”,出现“另存为”对话框,在“工具”中选“常规选项”,出现“保存”选项卡. 3.分别在“打开权限密码”和“修改权限密码”中输入 ...
- AngularJS----ngModelController
文档地址:https://docs.angularjs.org/api/ng/type/ngModel.NgModelController 首先声明:DOM value 与view value是完全不 ...
- ubuntu 安装最新的python3.7.0
原文:https://www.cnblogs.com/ningvsban/p/4384995.html 1. 安装pyenv git clone git://github.com/yyuu/pyenv ...
- Python 文件修改
# 需求: 把好人换成sb # 必须: # 1. 先从文件中读取内容 # 2. 把要修改的内容进行修改 # 3. 把修改好的内容写人一个新文件 # 4. 删除掉原来的文件 # 5. 把新文件重命名成原 ...
- Foundation--结构体
一,NSRange typedef struct _NSRange { NSUInteger location; NSUInteger length; }NSRange; 这个结构体用来表示事物的一个 ...