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

    一、赋值操作

      =  赋值

    lst1 = ["⾦⽑狮王", "紫衫⻰王", "⽩眉鹰王", "⻘翼蝠王"]
    lst2 = lst1
    print(lst1)
    print(lst2)
    lst1.append("杨逍")
    print(lst1)
    print(lst2)
    结果: [
    '⾦⽑狮王', '紫衫⻰王', '⽩眉鹰王', '⻘翼蝠王', '杨逍'] ['⾦⽑狮王', '紫衫⻰王', '⽩眉鹰王', '⻘翼蝠王', '杨逍']
    dic1 = {"id": 123, "name": "谢逊"}
    dic2 = dic1
    print(dic1)
    print(dic2)
    dic1['name'] = "范瑶"
    print(dic1)
    print(dic2)
    结果:
    {'id': 123, 'name': '谢逊'}
    {'id': 123, 'name': '谢逊'}
    {'id': 123, 'name': '范瑶'}
    {'id': 123, 'name': '范瑶'}

      对于list、set、dict来说,直接赋值操作,其实就是把内存地址交给对方,并不是复制一份,所以他们的内存地址都一样,一个改变,就都会更改。

    二、浅拷贝

      浅拷贝:只会拷贝第一层,不会拷贝第二层lst1 = ["何炅", "杜海涛","周渝⺠"]

    lst2 = lst1.copy()
    lst1.append("李嘉诚")
    print(lst1)
    print(lst2)
    print(id(lst1), id(lst2))
    结果: 两个lst完全不⼀样. 内存地址和内容也不⼀样. 发现实现了内存的拷⻉

    #此题有坑,只会拷贝第一层数据,列表共用了同一个内存地址 lst1
    = ["何炅", "杜海涛","周渝⺠", ["麻花藤", "⻢芸", "周笔畅"]] lst2 = lst1.copy() lst1[3].append("⽆敌是多磨寂寞") print(lst1) print(lst2) print(id(lst1[3]), id(lst2[3]))
    结果: [
    '何炅', '杜海涛', '周渝⺠', ['麻花藤', '⻢芸', '周笔畅', '⽆敌是多磨寂寞']] ['何炅', '杜海涛', '周渝⺠', ['麻花藤', '⻢芸', '周笔畅', '⽆敌是多磨寂寞']]
    列表的内存地址相同 :4417248328 4417248328

    三、深拷贝

      1、导入拷贝模块 : import copy   copy.deepcopy( )

      2、拷贝对象的全部内容,有多少层就从新创建多少层,各不干扰

    import copylst1 = ["何炅", "杜海涛","周渝⺠", ["麻花藤", "⻢芸", "周笔畅"]]
    lst2 = copy.deepcopy(lst1)
    lst1[3].append("⽆敌是多磨寂寞")
    print(lst1)
    print(lst2)
    print(id(lst1[3]), id(lst2[3]))
    结果:
    ['何炅', '杜海涛', '周渝⺠', ['麻花藤', '⻢芸', '周笔畅', '⽆敌是多磨寂寞']]
    ['何炅', '杜海涛', '周渝⺠', ['麻花藤', '⻢芸', '周笔畅']]
    内部的列表有不一样的内存地址:4447221448 4447233800

    小面试题:

    a = [1, 2]
    a[1] = a
    print(a[1])
    结果
    [1,[...]]

  • 相关阅读:
    [转载] 浏览器渲染Rendering那些事:repaint、reflow/relayout、restyle
    JQuery 备忘
    HTML实体符号代码速查表(转载)
    37、IFE任务12——学习CSS 3的新特性
    36、IFE任务35——听指令的小方块(三)
    35、IFE任务34——听指令的小方块(二)
    34、互联网的三次革命及三个阶段
    33、任务三十三——棋盘的实现、正方体的移动效果
    32、任务三十二——实现表单工厂
    31、任务三十一——表单联动
  • 原文地址:https://www.cnblogs.com/angle6-liu/p/9991207.html
Copyright © 2011-2022 走看看