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']]
  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/whnbky/p/11310384.html
Copyright © 2011-2022 走看看