zoukankan      html  css  js  c++  java
  • python中赋值-浅拷贝-深拷贝之间的关系

    赋值:

    变量的引用,没有拷贝空间

    对象之间赋值本质上 是对象之间的引用传递而已。也就是多个对象指向同一个数据空间。

    拷贝的对象分两种类型:

    . 拷贝可变类型
      浅拷贝:
        只拷贝第一层数据,不关心里面的第二层内容,能够保证外层数据独立
      深拷贝:
        拷贝了所有层数据,所有层数据都是独立。

      而一层可变类型数据,深拷贝和浅拷贝是一样,会拷贝。

    . 拷贝不可变类型
      一层不可类型数据,深拷贝和浅拷贝也是一样,不会拷贝,只是引用
      多层都是不可类型数据,深拷贝和浅拷贝也是一样,不会拷贝,只是引用


      多层中只要有可变类型数据
        浅拷贝:
          只关心第一层,如果第一层是不可变类型,不会拷贝,只是引用

        深拷贝:
          关心所有层,多层中只要有一层是可变类型数据,所有层都拷贝,保证数据独立

     1 import copy
     2 
     3 # 浅拷贝
     4     copy.copy()
     5     list.copy()
     6     dict.copy()
     7     d = c[:] # 切边能拷贝一个列表
     8 
     9 # 深拷贝
    10     copy.deepcopy()

    同样 numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)

    np.array() 是深拷贝,np.asarray() 是浅拷贝

    两者主要的区别在于,array(默认)复制一份对象,asarray不会执行这一动作。

    1 def asarray(a, dtype=None, order=None):
    2     return array(a, dtype, copy=False, order=order)
  • 相关阅读:
    一年三百六十日,需求业务严相逼
    新博客测试
    教务流水账
    暗流涌动的话“用户体验”
    文档那些事儿
    jforum(2)中文乱码的解决方式
    jmeter笔记(4)测试上传附件
    jmeter笔记(2)组件介绍
    jmeter笔记(5)参数化CSV Data Set Config
    jmeter笔记(6)参数化函数助手
  • 原文地址:https://www.cnblogs.com/lzc978/p/10105024.html
Copyright © 2011-2022 走看看