欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python中列表的深浅拷贝

程序员文章站 2022-10-16 13:42:30
copy_lst = [ ('py对象三要素',), ('== 比较运算符',), ('is 身份运算符',), ('小数据池',), ('列表的浅拷贝',), ('列表的深拷贝',), ] py对象三要素 id type value == 比较运算符 通过value进行判断 >>>a = 257 ......

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