Python中列表的深浅拷贝

发布时间:2019-04-09 21:38:35编辑:auto阅读(1772)

    copy_lst = [

      ('py对象三要素',),

      ('== 比较运算符',),

      ('is 身份运算符',),

      ('小数据池',),

      ('列表的浅拷贝',),

      ('列表的深拷贝',),

    ]

     

    py对象三要素

      id

      type

      value

    == 比较运算符

      通过value进行判断

        >>>a = 257

        >>>b = 257

        >>> a == b

        True

    is 身份运算符

      通过id进行判断

        >>>a = 257

        >>>b = 257

        >>>id(a) == id(b)

        False

        >>>a is b

        False

    小数据池

      代码块的缓存机制

    列表的浅拷贝

      第一层创建新的内存地址

      从第二层开始,指向同一个内存地址

        >>>lst = [1, 2, [3, 4]]

        >>>copy_lst = lst.copy()

        >>>lst is copy_lst

        False

        >>>lst[0] = 5

        >>>lst[0] is copy_lst[0]

        False

        >>>lst[2][1] = 6

        >>>lst[2] is copy_lst[2]

        True

    列表的深拷贝

      完全独立

      改变列表任意一个元素(无论多少层),另一个列表都不会改变

        >>>from copy import deepcopy

        >>>lst = [1, 2, [3, 4]]

        >>>deepcopy_lst = deepcopy(lst)

        >>>lst is deepcopy_lst

        False

        >>>lst[0] = 6

        >>>lst[0] is deepcopy_lst[0]

        False

        >>>lst[2][1] = 5

        >>>lst[2] is deepcopy_lst[2]

        False

      

      

      

      

关键字