浅拷贝 shallow copy 和 深拷贝 deep copy

浅拷贝 shallow copy 和 深拷贝 deep copy

浅拷贝:

    是指复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程

  示例:

    L = [3.1, 3.2]

    L1 = [1, 2, L]  #[1, 2, [3.1, 3.2]]

    L2 = L1.copy()  #[1, 2, [3.1, 3.2]]浅拷贝

    L[0] = 3.14

    L1  # [1, 2, [3.14, 3.2]]  

    L2  # [1, 2, [3.14, 3.2]] 为什么变为3.14?

    # L1[2] 和 L2[2] 共同拥有 L绑定的对象

深拷贝:

  示例:

    import copy  # 导放copy模块

    L = [3.1, 3.2]

    L1 = [1, 2, L]  #[1, 2, [3.1, 3.2]]

    L2 = copy.deepcopy(L1)  # 深拷贝

    L[0] = 3.14

    L1  # [1, 2, [3.14, 3.2]]  

    L2  # [1, 2, [3.1, 3.2]] 此列表不受影响

 

  注:

深拷贝通常只对可变对象进行深层复制,不可变对象通常不会被复制

你可能感兴趣的:(Python)