笔记:Python的浅复制和深复制
2024-09-05 09:53:08
方法copy返回一个新字典,其包含的键-值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而不是副本)。
>>> x = {"username": "hello", "machines": ["one", "two", "three"]}
>>> y = x.copy()
>>> y["username"] = "hi"
>>> y["machines"].append("four")
>>> y
{'username': 'hi', 'machines': ['one', 'two', 'three', 'four']}
>>> x
{'username': 'hello', 'machines': ['one', 'two', 'three', 'four']}
当替换副本的值的时候,原件不受影响。当时当修改副本中的值(就地修改,而不是替换),原件也将发生变化,因为原件指向的也是被修改的值。
为避免这个问题,一种办法是执行深复制,即同时复制值以及其包含的所有值等等。可以使用copy模块中的deepcopy函数。
>>> from copy import deepcopy
>>> d = {}
>>> d["name"] = ["Alice", "Ben"]
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d["name"].append("Clive")
>>> c
{'name': ['Alice', 'Ben', 'Clive']}
>>> dc
{'name': ['Alice', 'Ben']}
最新文章
- 总结项目开发中用到的一些css\html技巧
- 1280*720P和1920*1080P的视频在25帧30帧50帧60帧时的参数
- PHP正则表达式详解(二)
- C#联合Union的实现方式
- usaco 2010年3月银组题解
- String定义与方法
- Android 系统日期时间的获取
- 【转】Java 多线程(四) 多线程访问成员变量与局部变量
- 金额的计算BigDecimal类
- libuv 初窥--转
- 读书笔记:《梦断代码Dreaming in Code》
- 35. leetcode 501. Find Mode in Binary Search Tree
- LeetCode 120. Triangle (三角形)
- 用原型代替PRD时,原型应该包含哪些内容
- [Python] Python 学习 - 可视化数据操作(一)
- nvm的安装
- ISO GPS定位,坐标转换以及如何显示
- HDU1506(真心不错的DP)
- oc 中的id类型与类型转换
- UVA+POJ中大数实现的题目,持续更新(JAVA实现)
热门文章
- linux下vnstat查看服务器带宽流量统计
- python面试题之阅读下面的代码,它的输出结果是什么?
- void v.s. void *
- vue-cli3使用cdn引入
- npm 安装扩展模块时,因缓存报错的问题汇总
- fastjson转换包含date类型属性的对象时报错com.alibaba.fastjson.JSONException: For input string: ";13:02:19";
- 新手创建多module mvn工程
- 【JS学习】慕课网2-7 练习题:制作新按钮,“新窗口打开网站” ,点击打开新窗口。
- python制作坦克对战
- webpack引入全局jQuery