zoukankan      html  css  js  c++  java
  • python 基础之浅拷贝与深拷贝

    浅拷贝与深拷贝

    1.普通赋值

    1:

    a = 15
    b = a
    a = 16
    print(b)
    #2:
    lst1 = [1,2,3]
    lst2 = lst1
    lst1.append(4)
    print(lst2)
    #这个情况是lst1lst2地址相同,元素相同

    2.浅拷贝

    #只拷贝以及所有元素
    #:

    #法一:直接.copy()拷贝

    lst1 = [1,2,3]
    #lst2 = lst1
    lst2 = lst1.copy()
    print(lst2)
    lst1.append(4)
    print(lst2)
    print(lst1)

    #法二:使用模块进行浅拷贝
    import copy
    #copy 模块下面有一个同名的copy方法
    lst1 = [1,2,3]
    lst2 = copy.copy(lst1)
    lst1.append(5)
    print(lst2)

    3.深拷贝

    将所有级别的元素统统独立拷贝一份
    "每一级的所有元素统统拷贝一份,不沿用以前的数据"
    #import引入copy复制模块 deepcopy深拷贝 copy浅拷贝
    import copy #copy deepcopy()
    lstvar = [1,2,3,[4,5,6]]
    lstvar2 = copy.deepcopy(lstvar)
    lstvar[-1].append(7)
    print(lstvar2)
    print(lstvar)
    dictvar = {'a':[1,2],"b":{"c":123,"d":[7,8,9]}}
    dict2 = copy.deepcopy(dictvar)
    dictvar["b"]["d"].extend("ab")
    print(dict2)

    lstvar = [1,2,3,[4,5]]
    lst2 = copy.copy(lstvar)
    print(lst2)
    lstvar.append(66)
    print(lst2)

    #在浅拷贝中把字符串这样列表的当着一级容器数据
    lstvar = [1,2,3,"45"]  
    lstvar2 = copy.copy(lstvar)
    # lstvar[-1] = 1234   #
    # print(lstvar)
    # print(lstvar2)

     

    #赋值与浅拷贝与深拷贝内存关系

     

    浅拷贝只有一级数据时独立的,二级的数据时相同的地址的

  • 相关阅读:
    error C2054: 在“inline”之后应输入“(”
    SendInput模拟键盘操作
    获取广电高清直播源
    Lua使用luasocket http请求例子
    枚举所有继承特定接口的类
    Stream Byte[] 转换
    async await
    C# ServiceStack.Redis 操作对象List
    resharper安装后,一不小心点错了(选择了object browser)
    fiddler 挂载 JS文件
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/10849498.html
Copyright © 2011-2022 走看看