zoukankan      html  css  js  c++  java
  • 08_Python_直接赋值、深拷贝、浅拷贝

    1、直接赋值

    • 简单来说,直接赋值就是对象的引用(别名)。

    1.1、实例

    # 1、直接赋值
    a =  {1: [1,2,3]}
    b=a
    
    # 查看a、b在内存的地址
    print( 'a = ', id(a) )
    print( 'b = ', id(b) )
    
    #输出结果,可以看出他们的地址是一致的。
    
    '''
    a =  6909600
    b =  6909600
    '''
    

    2、浅拷贝

    • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

    2.1、浅拷贝实例

    a = {1: [1, 2, 3]}
    b = a.copy()
    
    a[1].append('c')  # 修改对象a中的数组对象
    
    print('a = ', a)
    print('b = ', b)
    
    '''
    通过输出结果可以看出,虽然a、b并不是独立存在的,修改a后,b中同样做了修改。
    
    a =  {1: [1, 2, 3, 'c']}
    b =  {1: [1, 2, 3, 'c']}
    '''
    
    

    3、深拷贝

    • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

    深拷贝是在另一块地址中创建一个新的变量或容器,同时容器内的元素的地址也是新开辟的,仅仅是值相同而已,是完全独立的一个副本。

    3.1、深拷贝实例

    import copy
    
    a = {1: [1, 2, 3]}
    # 深拷贝
    b = copy.deepcopy(a)
    
    a[1].append('c')  # 修改对象a中的数组对象
    
    print('a = ', a)
    print('b = ', b)
    
    '''
    通过输出结果可以看出,虽然a、b是独立存在的,a的修改不会影响b
    
    a =  {1: [1, 2, 3, 'c']}
    b =  {1: [1, 2, 3]}
    '''
    
  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/jasontang369/p/9243003.html
Copyright © 2011-2022 走看看