zoukankan      html  css  js  c++  java
  • 赋值、浅拷贝以及深拷贝的区别

    字符串赋值

    >>>
    >>> str1 = 'standby'
    >>> 
    >>> str2 = str1
    >>> 
    >>> print str1==str2, str1 is str2
    True True
    >>> 
    >>> id(str1)
    139792206350496
    >>> id(str2)
    139792206350496
    >>> 

    补充

    >>> 
    >>> a = 'standby'
    >>> b = 'standby'
    >>> 
    >>> a == b
    True
    >>> a is b
    True
    >>> 
    >>> id(a)
    139792206350496
    >>> id(b)
    139792206350496
    >>> 

    字符串浅拷贝方式一

    >>> 
    >>> import copy
    >>> str1 = 'standby'
    >>> 
    >>> str2 = copy.copy(str1)
    >>> 
    >>> print str1==str2, str1 is str2
    True True
    >>> 
    >>> id(str1)
    139792206350496
    >>> id(str2)
    139792206350496
    >>> 

    字符串浅拷贝方式二

    >>> 
    >>> str1 = 'standby'
    >>> 
    >>> str2 = str1[:]
    >>> 
    >>> print str1==str2, str1 is str2
    True True
    >>> 
    >>> id(str1)
    139792206350496
    >>> id(str2)
    139792206350496
    >>> 
    

    字符串深拷贝

    >>> 
    >>> import copy
    >>> str1 = 'standby'
    >>> 
    >>> str2 = copy.deepcopy(str1)
    >>> 
    >>> print str1==str2, str1 is str2
    True True
    >>> 
    >>> id(str1)
    139792206350496
    >>> id(str2)
    139792206350496
    >>> 
    

    列表赋值

    >>> 
    >>> list1 = [1, 2, [1, 2]]
    >>> 
    >>> list2 = list1
    >>> 
    >>> print list1==list2, list1 is list2
    True True
    >>> 
    >>> id(list1)
    139792206344992
    >>> id(list2)
    139792206344992
    >>> 

    补充

    >>> 
    >>> list1 = [1, 2, ['a', 'c']]
    >>> list2 = [1, 2, ['a', 'c']]
    >>> 
    >>> list1 == list2
    True
    >>> list1 is list2
    False
    >>> 
    >>> id(list1)
    139792206356704
    >>> id(list2)
    139792206348088
    >>> 

    列表浅拷贝方式一

    >>> 
    >>> import copy
    >>> list1 = [1, 2, [1, 2]]
    >>> 
    >>> list2 = copy.copy(list1)
    >>> 
    >>> print list1==list2, list1 is list2
    True False
    >>> 
    >>> 
    >>> id(list1)
    139792206344920
    >>> id(list2)
    139792206356560
    >>> 
    

    列表浅拷贝方式二

    >>> 
    >>> list1 = [1, 2, [1, 2]]
    >>> 
    >>> list2 = list1[:]
    >>> 
    >>> print list1==list2, list1 is list2
    True False
    >>> 
    >>> id(list1)
    139792206356704
    >>> id(list2)
    139792206344992
    >>> 
    

      

    列表深拷贝

    >>> 
    >>> import copy
    >>> list1 = [1, 2, 3, 4]
    >>> 
    >>> list2 = copy.deepcopy(list1)
    >>> 
    >>> print list1==list2, list1 is list2
    True False
    >>> 
    >>> id(list1)
    139792206344992
    >>> id(list2)
    139792206344920
    >>> 

    浅拷贝情况下的修改

    >>> 
    >>> import copy
    >>> list1 = [1, 2, ['a', 'c']]
    >>> 
    >>> list2 = copy.copy(list1)
    >>> print list1==list2, list1 is list2
    True False
    >>> id(list1)
    139792206358720
    >>> id(list2)
    139792206359080
    >>> 
    >>> list2[2].append('k')
    >>> print list2,list1
    [1, 2, ['a', 'c', 'k']] [1, 2, ['a', 'c', 'k']]
    >>> id(list1)
    139792206358720
    >>> id(list2)
    139792206359080
    >>> 
    

      

    深拷贝情况下的修改

    >>> 
    >>> import copy
    >>> list1 = [1, 2, ['a', 'c']]
    >>> 
    >>> list2 = copy.deepcopy(list1)
    >>> print list1==list2, list1 is list2
    True False
    >>> id(list1)
    139792206344920
    >>> id(list2)
    139792206358720
    >>> 
    >>> list2[2].append('k')
    >>> print list2,list1
    [1, 2, ['a', 'c', 'k']] [1, 2, ['a', 'c']]
    >>> id(list1)
    139792206344920
    >>> id(list2)
    139792206358720
    >>> 
    

      

     

    作者:Standby一生热爱名山大川、草原沙漠,还有妹子
    出处:http://www.cnblogs.com/standby/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    PMP笔记:行政收尾工作
    PMP 笔记:WBS 词典 (含范例)
    PMP 笔记:WBS 实战 (例子)
    名义小组和德尔菲技术使用与区别
    焦点小组、名义小组和引导式会议的定义与区别
    工作分解结构WBS、组织分解结构OBS、资源分解结构 定义和区别(含例子)
    kettle里的参数和变量
    kettle生成100个随机数,并统计小于等于50和大于50个数
    使用kettle制作拉链表
    MySQL字符串转日期
  • 原文地址:https://www.cnblogs.com/standby/p/8322307.html
Copyright © 2011-2022 走看看