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

    1、浅拷贝

    1 >>> import copy
    2 >>>
    3 >>> num1 = [1, 2, 3, ['a', 'b'], 4, 5]
    4 >>> num2 = copy.copy(num1)
    5 >>> print(id(num1), id(num2))
    6 31514312 51066184    #指向不同内存地址
    7 >>>
    8 >>> print(id(num1[3]), id(num2[3]))
    9 51136456 51136456    #两个列表中的['a', 'b']指向相同内存地址

    可以得出结果

    1 #改变其中一个列表中的外层元素时,另一个列表的外层元素不会发生变化
    2 >>> num1[2] = 'c'
    3 #而无论改变哪个列表的内层元素时,两个列表的内层元素都会发生变化
    4 >>> num2[3][0] = 'd'
    5 >>> print(num1)
    6 [1, 2, 'c', ['d', 'b'], 4, 5]
    7 >>> print(num2)
    8 [1, 2, 3, ['d', 'b'], 4, 5]

    2、深拷贝

    都是指向不同的内存地址

    1 >>> import copy
    2 >>> num1 = [1, 2, 3, ['a', 'b'], 4, 5]
    3 >>> num2 = copy.deepcopy(num1)
    4 >>> print(id(num1), id(num2))
    5 51136520 51136328
    6 >>> print(id(num1[3]), id(num2[3]))
    7 51136776 51066952

    可以得出结论

    1 #无论哪一个列表的内外层元素发生变化都不影响另一个列表
    2 >>> num1[2] = 'c'
    3 >>> num2[3][0] = 'd'
    4 >>> print(num1)
    5 [1, 2, 'c', ['a', 'b'], 4, 5]
    6 >>> print(num2)
    7 [1, 2, 3, ['d', 'b'], 4, 5]
  • 相关阅读:
    导入数据库的命令
    截取字符串
    用decode函数实现行变列
    初始库存入库相关知识
    客户欠款余额账
    存货管理
    创建临时表(转)
    求余额
    学习浪潮系统
    oracle number类型
  • 原文地址:https://www.cnblogs.com/drunkle/p/13022021.html
Copyright © 2011-2022 走看看