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

    必考

    存一个值还是多个值

    一个值:整型/浮点型/字符串

    多个值:列表/元祖/字典/集合

    有序or 无序

    有序:字符串/列表/元祖

    无序:字典/集合

    可变or 不可变

    可变:列表/字典/集合

    不可变:整型/浮点型/字符串

    浅拷贝和深拷贝(只针对可变类型)

    # 拷贝
    # lis = [1,2,3,4]
    # lis2 = lis  # 最基本的拷贝
    #
    # lis.append(5)
    # print(lis)
    # print(lis2)
    #
    # x = 10
    # y = x
    # x+=1
    # print(x)
    # print(y)
    
    # 浅拷贝
    # import copy
    #
    # lis = [1, 2, 3, 4, [5, 6, 7]]
    # lis2 = copy.copy(lis)
    # print(lis)
    # print(lis2)
    
    # lis.append(8)
    # print(lis)
    # print(lis2)
    
    # lis[4].append(8)
    # print(lis)
    # print(lis2)
    
    # print(id(lis[0]))
    # print(id(lis[1]))
    # print(id(lis[2]))
    # print(id(lis[3]))
    # print(id(lis[4]))
    #
    # print(id(lis2[0]))
    # print(id(lis2[1]))
    # print(id(lis2[2]))
    # print(id(lis2[3]))
    # print(id(lis2[4]))
    
    # lis[0] += 1
    # print(lis)
    # print(lis2)
    

    总结:

    拷贝:

    '''
    如果l2是l1的拷贝对象,l1发生改变则l2也会发生改变,因为l1是可变类型,可变类型
    值变id不变
    '''

    浅拷贝:

    '''
    如果l2是l1的浅拷贝对象,l1内部的不可变对象发生改变,则l2不变;如果l1内部的可变对象发生
    改变,则l2随着改变
    '''

    深拷贝:

    '''
    如果l2是l1的深拷贝对象,l1内部的不可变对象发生改变,则l2不变;如果l1内部的可变对象发生
    改变,l2也不会改变
    '''

  • 相关阅读:
    OpenGL完整实例
    OpenGL
    Socket(2)
    Socket(1)
    Stream,Reader/Writer,Buffered的区别(2)
    Stream,Reader/Writer,Buffered的区别(1)
    SQLite数据库与Contentprovider(2)
    SQLite数据库与Contentprovider(1)
    数据存储和访问
    AIDL与service
  • 原文地址:https://www.cnblogs.com/bladecheng/p/10920244.html
Copyright © 2011-2022 走看看