zoukankan      html  css  js  c++  java
  • 浅拷贝和深拷贝

    判断内容时候用=号, 判断引用 时候用 is,特例如下:在某个复制到一个正值之间(-5-255)多之间,并没有创建另外一个对象
    a =100     a = 10000
    b =100     b = 10000
    a ==b      a ==b
    true       true
    a is b     a is b
    true        false
    ---------------------------------------------------------
    浅拷贝:拷贝的仅仅是引用而已,并没有另辟一片内存。 面试
    a =[22,33,44]
    b = a    id(a)和id(b)一样
    若 a.append(99)
    b = [22,33,44,99]
     
    深拷贝:另辟一片内存,b指向它,并且有a的内容。 面试
    a =[22,33,44]
    import copy 导入一个模块
    b = copy.deepcopy(a)
    id(a)和id(b)不一样
    若 a.append(99)
    b = [22,33,44]
    ------------------------------------------------------------------------------------
    a = [22,33,44]
    b = [55,66]
    c = [a,b]    [a,b]表示里面是a 的引用,和b 的引用,即地址,引用指向数据。是浅拷贝
    e = copy.deepcopy(c) 深拷贝,表示另辟一片空间e,里面是a,b的引用,并且a,b 指向的数据是重新开辟的空间,
    并不是原先a b的地址。
    ----------------------------------------------------------------------------------------------------------
    在交互模式python环境中,打copy. 按tab 键,会出现很多功能,其中有个copy.copy和deepcopyde 区别是,前者只识别一层。
    e = copy.copy(c)   c 中的a, b 还是原来的地址,并不重新创建。。
    ----------------------------------------------------------------------------------------------------------
    a =[1,2,3]
    b = [4,5,6]
    c = (a,b) 元祖
    e = copy.copy(c) copy拷贝的是不可变类型,直接就是浅拷贝。
    a.append(20)
    print(c)  ([1,2,3,20],[4,5,6])
    print(e)  ([1,2,3,20],[4,5,6])
     
    f=copy.deepcopy(c)
    a.append(20)
    print(c)  ([1,2,3,20],[4,5,6])
    print(f)   ([1,2,3],[4,5,6])

     
    life is short,i need python
  • 相关阅读:
    CMD指令
    六种Socket I/O模型幽默讲解
    性格与职业的选择
    为什么主引导记录的内存地址是0x7C00?
    pandas数据分析第二天
    pandas数据结构和介绍第一天
    tornado options
    tornado.web.StaticFileHandler
    mysql多条更新
    pandas
  • 原文地址:https://www.cnblogs.com/lvhonglei-python/p/7058485.html
Copyright © 2011-2022 走看看