专栏首页技术向python中的深复制与浅复制

python中的深复制与浅复制

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/python-deep-shallow-copy/

在使用python对数据对预处理,比如归一化、去噪时,发现处理后的数据会有诡异的

现象,比如全部都是一样的,或者某些都是一样的。

调查了一番之后,发现这是由于python中的深浅复制造成的。其实,归根结底这与python中的内存分配与管理方式有关。

下面对不同的复制做出结论。

直接引用

类似于a=[1,2,3] b = a, 这样的都是直接引用,b的值会随着a值的变动而变动

切片复制

切片复制主要是a=[1, 2, 3] b=a[:], 当被复制的对象内部只是基本类型而没有嵌套类型时,切片复制可以实现两个对象的隔离。

注意,嵌套类型指的是列表中还有列表,字典中嵌套列表等等复杂类型。

浅复制

指的是b = copy.copy(a)的情况,对简单类型有用

深复制

指的是b = copy.deepcopy(a)的情况,就是你所想象的两个对象互不影响的复制。

完整测试

#encoding:utf-8
import numpy as np 
import copy
a = [1, 2 , 3, [4, 5]]
reference_a = a 
slice_copy_a = a[:]
shallow_copy_a = copy.copy(a)
deep_copy_a = copy.deepcopy(a)

# print original
print('Original a is\t\t ', a)
# 修改a的基本元素
a[0] = 100
# 修改a的复杂元素
a[3][0] = 1000

print('Now a is \t\t', a)
print('reference_a is\t\t', reference_a)
print('shallow copy is\t\t ', shallow_copy_a)
print('slice copy is \t\t', slice_copy_a)
print('deep copy is \t\t', deep_copy_a)

Reference:

  1. http://python.jobbole.com/82294/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 安装redsocks时碰到的问题

    shadowsocks是一种流量代理软件,它可以在本机开放一个端口,所有发往该端口的数据都会被代理转发。那如果我们想转发所有流量到代理呢?这就是redsocks...

    羽翰尘
  • 网页文件浏览器

    本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/fronted_file_explore/

    羽翰尘
  • python高阶教程-对象管理与垃圾回收

    我们可使用copy模块中的函数来复制一个复杂对象,主要分为shallow copy和deep copy两类

    羽翰尘
  • Python面试题目之深浅拷贝浅析

    b是对a列表的又一个引用,所以a、b是完全相同的,可以通过id(a)==id(b)证明。

    Jetpropelledsnake21
  • Python深浅copy

    这里需要提到一个新名词,指针:变量和内存中数据的一种引用关系。变量通过指针对应到内存中的数据

    py3study
  • ZooKeeper不仅仅是注册中心,你还知道有哪些?

    Apache ZooKeeper 是一个开源的实现高可用的分布式协调服务器。ZooKeeper是一种集中式服务,用于维护配置信息,域名服务,提供分布式同步和集群...

    cxuan
  • 钉钉推出全行业解决方案,机遇和挑战并存

    智博会让重庆这几天成为科技圈的焦点,BAT在会上各有动作,阿里旗下的蚂蚁金服、阿里云、菜鸟、钉钉在重庆都有项目落地,让人目不暇接,期间阿里还举办了两个峰会,一个...

    罗超频道
  • ZooKeeper简介

    ZooKeeper是一个分布式的开源协调服务,用于分布式应用程序。它公开了一组简单的原子操作,分布式应用程序可以构建这些原子操作,以实现更高级别的服务,以实现同...

    小忽悠
  • MooseFS分布式文件系统

    类似GoogleFS的实现方式,即一个MasterServer和多个ChunkServer构成的存储集群。MFS系统由4个部分构成,master、metalog...

    泽阳
  • hive | 解决character '​' not supported here

    今天在处理数据入库时出现了character '​' not supported here的bug

    week

扫码关注云+社区

领取腾讯云代金券