专栏首页python3Python中列表的深浅拷贝

Python中列表的深浅拷贝

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python学习3-内置数据结构1-列表

    lst = list(range(1,20))    #使用list把可迭代对象转换为列表

    py3study
  • Python list初始化

    4、Python的四种数据类型字典、集合、列表、元组,分别用花括号、中括号、小括号表示。如:

    py3study
  • day04

      一个只包含一个元素的元祖,必须在这个元素的后面加上逗号,如:(1,)。否则他就是(1),而(1)和1并无区别。

    py3study
  • Python按位异或运算符^应用案例一则:查找只出现一次的数字

    问题描述:有一个整数列表,里面有一个数字只出现了一次,而其他数字都出现了4次,要求查找这个只出现了一次的数字。 思路要点:一个数字和自己异或一次会变成0。 参考...

    Python小屋屋主
  • python: list型数据 的 索引顺序

    JNingWei
  • Python版基于递归的冒泡排序算法

    应读者要求,写个基于递归的冒泡排序算法代码,之前发过的排序算法代码请参考:Python版快速排序算法,Python版选择排序算法,Python版冒泡法排序算法。...

    Python小屋屋主
  • Python版本的报数游戏

    问题描述:有n个人围成一圈,顺序排号。从第一个人开始从1到k(假设k=3)报数,报到k的人退出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号...

    Python小屋屋主
  • Python版冒泡法排序算法

    from random import randint def bubbleSort(lst, reverse=False): length = len(...

    Python小屋屋主
  • Python序列循环移位的3种方法

    第一种方法:特点是直接、容易理解,缺点是速度慢,只能实现循环左移。 def demo(lst, k): temp = lst[:] for i ...

    Python小屋屋主
  • BAT面试题26:一道Python填空题

    因为Python内存还是存了第一次残留的lst值,请注意看lst作为f的默认参数。所以它以0和1开头。

    double

扫码关注云+社区

领取腾讯云代金券