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,[...]]

  • 相关阅读:
    炫酷风扇
    linux 安装wordpress 无故往外发送大量垃圾邮件
    四大行及邮储微信银行体验
    房屋抵押合同及契税缴纳办事指南(参考)
    wordpress搬家到 linode 步骤简析
    linux mysql无故无法启动了,centos 7
    淘宝轮播JS
    curl模拟带验证码的登录
    php正则表达式,在抓取内容进行匹配的时候表现不稳定
    Js的闭包,这篇写的是比较清晰明了的
  • 原文地址:https://www.cnblogs.com/angle6-liu/p/9991207.html
Copyright © 2011-2022 走看看