深拷贝与浅拷贝

总结:

# 浅拷贝:list dict: 嵌套的可变数据类型是同一个

# 深拷贝:list dict: 嵌套的不可变数据类型彼此独立

浅拷贝

# 个人理解:

# 在内存中重新创建一个空间(所以内存地址不同),

# 内存地址延用之前的,所以列表内每个元素的内存地址相同,

# 修改数据:如列表内元素为不可变类型,修改后,相当于修改了内存地址指向,拷贝的用的是之前的内存地址,所以两个列表同一位置,数据不同

# 如列表内元素为可变类型,两个列表id相同,修改后,id依然不变,所以,列表内可变类型元素修改后,两个同时修改

# 拷贝后,两者id不同

list1 = [1, 201, "name", ["zhangsan", "lisi"]]

list2 = list1.copy()

print(id(list1)) # 1494875032904

print(id(list2)) # 1494875033032

# 拷贝后,直接给列表增加数据

# copy之后,内存地址不一样,此时再去修改数据,只是修改的自己本身,不影响copy后的数据

list1.append("333")

print(list1) # [1, 201, 'name', ['zhangsan', 'lisi'], '333']

print(list2) # [1, 201, 'name', ['zhangsan', 'lisi']]

# copy后,修改列表内不可变数据类型数据,修改后,不影响copy数据

list1[0] = 800

print(id(list1[0])) # 2742476311120

print(id(list2[0])) # 1894219888

print(list1) # [800, 201, 'name', ['zhangsan', 'lisi'], '333']

print(list2) # [1, 201, 'name', ['zhangsan', 'lisi']]

# copy后,修改列表内可变数据类型数据,修改后,两者同时改变

list1[-2].append("huhansan")

print(id(list1[-2])) # 324363528840

print(list1) # [1, 201, 'name', ['zhangsan', 'lisi', 'huhansan'], '333']

print(id(list2[-1])) # 324363528840

print(list2) # [1, 201, 'name', ['zhangsan', 'lisi', 'huhansan']]

深拷贝

# 深拷贝 copy后,两者彼此完全独立

# python优化为:列表中不可变数据类型使用同一地址,可变数据类型重新创建,彼此独立

import copy

list1 = [1, 201, "name", ["zhangsan", "lisi"]]

list2 = copy.deepcopy(list1)

print(id(list1)) # 2336950587016

print(id(list2)) # 2336950570440

# 修改深拷贝后,列表内可变数据类型数据,两者id不同,彼此独立

list1[-1].append("wangwu")

print(id(list1[-1])) # 1506007387720

print(id(list2[-1])) # 1506007384904

print(list1) # [1, 201, 'name', ['zhangsan', 'lisi', 'wangwu']]

print(list2) # [1, 201, 'name', ['zhangsan', 'lisi']]

# 面试题:

list3 = [1, 2, 3, [22, 33]]

list4 = list3[:]

list3[-1].append("zhangsan")

print(id(list3[-1])) # 1966908952200

print(id(list4[-1])) # 1966908952200

print(list3) # [1, 2, 3, [22, 33, 'zhangsan']]

print(list4) # [1, 2, 3, [22, 33, 'zhangsan']]

python深浅拷贝 面试_python基础-深浅拷贝相关推荐

  1. python必刷面试_Python面试必刷题系列(5)

    本篇是[Python面试必刷题系列]的第5篇文章.通过收集.整理Python真实面试题,给大家讲解面试中的python高频考察点,希望能够引起读者的足够重视. 往期回顾: Python中 is 和 = ...

  2. python第七关_python 基础第七篇

    一. 补充基础数据类型的相关知识点 str. join() 把列表变成字符串 列表不能再循环的时候删除. 因为索引会跟着改变 字典也不能直接循环删除.把要删除的内容记录在列表中. 循环列表. 删除原列 ...

  3. python深浅拷贝 面试_Python面试宝典之基础篇-02

    原标题:Python面试宝典之基础篇-02 我觉得你如果正在找工作,我的Python面试宝典几期教程,你一定得花时间看完了! 题目006:说说Python中的浅拷贝和深拷贝. 点评:这个题目本身出现的 ...

  4. python怎么输出复数_python基础知识及应用(二)输入输出|递归|深浅拷贝|全局变量|复数...

    目录 一.python输入输出 二.迭代 2.1 输入与输出 2.2 解法 三.拷贝 3.1 拷贝实例 3.2 对象的赋值 3.3 浅拷贝 3.4 深拷贝 3.5 拷贝例如 四.set 4.1 题 4 ...

  5. python深浅拷贝应用_python之深浅拷贝

    对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. print(id(n2)) 对于字典.元组.列表而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变化是不同的. ...

  6. python 深浅拷贝案例_python(深浅拷贝)

    1.深拷贝  -->  克隆一份,修改拷贝后的内容不对原对象内容产生影响 拷贝后修改序列中元素内容,注意:被修改的元素不能为一个序列中的某个值 a  = [["北京多测师", ...

  7. cpython python 区别面试_python基础教程之千万不要错过这几道Python面试题

    第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...

  8. python列表浅复制_Python列表深浅复制详解

    转自:https://www.cnblogs.com/blaomao/p/7239203.html 在文章<Python 数据类型>里边介绍了列表的用法,其中列表有个 copy() 方法, ...

  9. python 条件表达式换行_Python基础语法 - LongKing-Xu的个人空间 - OSCHINA - 中文开源技术交流社区...

    python基础语法 一.标识符 在Python中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. 在Python中的标识符是区分大小写的. 在Python中以下划线开头的标识符是有 ...

最新文章

  1. 一次看懂RIP协议。
  2. textview的基本设置
  3. Random Maze HDU - 4067 费用流/可行流
  4. php怎么传json数据_php和js如何通过json互相传递数据相关问题探讨
  5. python生成正态分布数据_python 生成正态分布数据,并绘图和解析
  6. JavaWeb知识总结
  7. Security - 轻量级Java身份认证、访问控制安全框架
  8. volatile的总结
  9. 临时邮箱有什么用,推荐5个临时邮箱
  10. 微信小程序分享朋友圈API限制问题
  11. Tackling Climate Change with Machine Learning
  12. Cascade EF-GAN: 局部聚焦渐进式面部表情编辑
  13. 部署JAX-WS Web服务作为战争中的Apache Tomcat(Deploying JAX-WS webservice as War in Apache Tomcat)...
  14. 完全卸载Android Studio的方法
  15. 模块化:ES Module与commonJS
  16. 导数与偏导数的推导过程
  17. web前端需要学MySQL吗_web前端需要学什么?容易学吗?
  18. 尚学堂Java第五章所有题目
  19. Zookeeper小解
  20. 心情平静时看书,还是看书得到平静

热门文章

  1. Oracle宣布提供新的Java支持价格体系
  2. memcached单点故障与负载均衡
  3. 在虚拟机上linux系统上上网
  4. 会计电算化之Excel
  5. R package XML安装
  6. linux 远程 telnet
  7. [Python]小甲鱼Python视频第32课(except)课后题及参考解答
  8. 继承与多态——动手又动脑
  9. ThinkPHP U方法
  10. border-raduis 在IE8中的兼容性问题