Python深浅拷贝

忘是亡心i 2022-03-12 04:08 403阅读 0赞
  1. # 深浅拷贝
  2. # 无论修改哪一层 赋值的话都会修改 共享一块内存空间
  3. a = [[1, 2], 'joe', 'smith']
  4. b = a
  5. a[0][0] = 3
  6. print('赋值修改第二层', a, b)
  7. a[1] = '88'
  8. print('赋值修改第一层', a, b)
  9. # 拷贝的话 只会影响到第一层 第2,3...层都没有
  10. a = [[1, 2], 'joe', 'smith']
  11. b = a.copy()
  12. a[0][0] = 3
  13. print('拷贝修改第二层', a, b)
  14. a[1] = '88'
  15. print('拷贝修改第一层', a, b)
  16. # 浅拷贝 只会拷贝第一层 不会拷贝第2.3...
  17. # 重要 b 与 b2的区别
  18. a = []
  19. b = a # 深拷贝 共享一块内存
  20. b2 = a.copy() # 浅拷贝 只会影响到第一层
  21. # 赋值 a指向1的地址 b也指向了1的地址(虽然是通过a,但是也是获得最后的1的地址) 然后a又指向了2的地址
  22. a = 1
  23. b = a
  24. a = 2
  25. print(a)
  26. print(b)

要点:

  • 浅拷贝:copy()函数 只会影响到列表第一层 即拷贝前与拷贝后修改的话只会影响第一层
  • 深拷贝 :直接赋值 因为是共享一块内存,故拷贝前与拷贝后修改的话保持一致
  • 赋值 = :可以理解为门牌号, a=1 b=a a,b两个门牌号都指向1的地址,如果再来a=2 的话,就是门牌号a 摘下来放到指向2的地址 故 print(a)>>2, print(b) >>1。

发表评论

表情:
评论列表 (有 0 条评论,403人围观)

还没有评论,来说两句吧...

相关阅读

    相关 深浅拷贝

    深拷贝和浅拷贝是指在赋值时或将一个变量的值复制到另一个变量时,拷贝出来的变量和原变量之间的关系。 浅拷贝就是在复制的时候,复制的只是变量的引用,而不是变量的实际值。所以如果对

    相关 深浅拷贝

    深浅copy   先问问大家,什么是拷贝?拷贝是音译的词,其实他是从copy这个英文单词音译过来的,那什么是copy? copy其实就是复制一份,也就是所谓的抄一份。深浅

    相关 深浅拷贝

    转载:[详解Java中的clone方法][Java_clone]  虽然是转载,这里大概说一下自己的理解:   无论是深拷贝还是浅拷贝,只要是想让对象具有拷贝的功能

    相关 Python 深浅拷贝

    一、前言 Python的数据类型: 不可变数据类型:数值类型(int、float)、字符串、元组 可变数据类型:列表、字典、集合 深浅copy的模块(co

    相关 python深浅拷贝

    Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。 下面本文就通过简单的例子介绍一下这些概念之间的差别。 要想

    相关 python深浅拷贝

    在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用 一般有三种方法, a

    相关 深浅拷贝

    1. 基础数据类型补充 之前已经发过大多数的基本数据类型的知识 join()把传递进去的参数进行迭代. 获取到的每个元素和前面的\进行拼接. 得到的是字符串 spl