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

    存值个数数据类型
    单个值 数字,字符串
    多个值(容器) 列表,元组,字典,集合

    二、按可变不可变区分

     

    可变or不可变数据类型
    可变 列表,字典,集合
    不可变 数字,字符串,元组

    三、有序无序区分


    有序or无序数据类型
    有序(可按索引取值) 字符串,列表,元组
    不可变 字典,集合

    四、按访问类型区分


    访问类型数据类型
    直接访问 数字
    顺序访问(序列类型) 字符串,列表,元组
    key值访问(映射类型) 字典

    在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用

    针对该列表l1=['a','b','c',['d','e','f']]一般有三种方法,分别为:拷贝(赋值)、浅拷贝、深拷贝

    注意:拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的

    1.1、可变or不可变


    id不变值可变,即在原值的基础上修改,则为可变数据类型;值变id也变,即重新申请一个空间放入新值,则为不可变数据类型。

    age = 19
    print(f'first:{id(age)}')
    age = 20
    print(f'second:{id(age)}')
    first:4384901776
    second:4384901808

    二、拷贝

     

    如果l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变。

    l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
    l2 = l1
    
    l1.append('g')
    
    print(l1)
    ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
    print(l2)
    ['a', 'b', 'c', ['d', 'e', 'f'], 'g']

    三、浅拷贝

     

    如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变。

    import copy
    
    l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
    l2 = copy.copy(l1)
    
    l1.append('g')
    
    print(l1)
    ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
    print(l2)
    ['a', 'b', 'c', ['d', 'e', 'f']]
    l1[3].append('g')
    
    print(l1)
    ['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
    print(l2)
    ['a', 'b', 'c', ['d', 'e', 'f', 'g']]

    四、深拷贝

     


    如果l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的变化而变化。

    import copy
    
    l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
    l2 = copy.deepcopy(l1)
    
    l1.append('g')
    
    print(l1)
    ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
    print(l2)
    ['a', 'b', 'c', ['d', 'e', 'f']]
    l1[3].append('g')
    
    print(l1)
    ['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
    print(l2)
    ['a', 'b', 'c', ['d', 'e', 'f']]
  • 相关阅读:
    VS2010下配置CxImage
    Visual Studio 2010 开发配置
    主机屋使用感受
    Web开发者必备的20款超赞jQuery插件
    自动页面居中
    jQuery+CSS打造的网页背景颜色切换效果
    小按钮,大学问
    【网站开发必备】——12款响应式 Lightbox(灯箱)效果插件
    修正 IE 的双倍页边距 bug
    a>b?a:b
  • 原文地址:https://www.cnblogs.com/whnbky/p/11310384.html
Copyright © 2011-2022 走看看