Python 数据类型 copy & deepcopy
Python数据类型
不可变 int, float, string, tuple
>>> a = 1
>>> b = 1
>>> print(id(a))
140454796502904
>>> print(id(b))
140454796502904
# a b 地址一样
>>> a = 1
>>> x = copy.copy(a)
>>> y = copy.deepcopy(a)
>>> print(a,x,y)
(1, 1, 1)
>>> print(id(a),id(x),id(y))
(140454796502904, 140454796502904, 140454796502904)
>>> a = 2
>>> print(a,x,y)
(2, 1, 1)
>>> print(id(a),id(x),id(y))
(140454796502880, 140454796502904, 140454796502904)
>>>
改变a的值,发现a指向了另一个对象,而copy和deepcopy没变,依然指向原来的1
可变 list, dict, set, class
>>> c = [1]
>>> d = [1]
>>> print(id(c), id(d))
(140454827196216, 140454827241128)
# c d 地址不同,开辟了新的地址
>>> c = [1,[2,3]]
>>> d = copy.copy(c)
>>> e = copy.deepcopy(c)
>>> print(c,d,e)
([1, [2, 3]], [1, [2, 3]], [1, [2, 3]])
>>> print(id(c), id(d), id(e))
(140454827539200, 140454827539704, 140454827241128)
>>> c[1][0] = 4
>>> print(c,d,e)
([1, [4, 3]], [1, [4, 3]], [1, [2, 3]])
>>> print(id(c), id(d), id(e))
(140454827539200, 140454827539704, 140454827241128)
>>>
# copy和deepcopy分别开辟了新的地址, 嵌套列表c改变c[1][0] = 4, copy值随之改变,deepcopy不变。如果改变c[0], copy deepcopy都不会变
>>> c = [3,[4,5]]
>>> d = copy.copy(c)
>>> e = copy.deepcopy(c)
>>> c[0] = 2
>>> print(id(c), id(d), id(e))
(140454827539344, 140454827540280, 140454827539272)
>>> print(c,d,e)
([2, [4, 5]], [3, [4, 5]], [3, [4, 5]])
>>>
# c使用下标改变的list值,改变后地址也没变,如果是c = [1] 指向新的list,就会改变
原文地址:https://www.cnblogs.com/FANKIKI/p/15087110.html
- Codeforces 789A Anastasia and pebbles(数学,思维题)
- hihoCoder #1082 : 然而沼跃鱼早就看穿了一切(字符串处理)
- 51Nod 1182 完美字符串(字符串处理 贪心 Facebook Hacker Cup选拔)
- 51Nod 1080 两个数的平方和(数论,经典题)
- Selenium3+python自动化50-环境搭建(firefox)
- Selenium2+python自动化51-unittest简介
- 开发者的如何优雅的使用OSX
- 1082 与7无关的数(思维题,巨坑)
- Facebook构建高性能Android视频组件实践之路
- Samba服务的配置总结
- 大型互联网系统的监控流水线
- 10-移动端开发教程-移动端事件
- 灰色理论预测模型
- tweet情感分析流程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 性能优化漫谈(一):无代码调优
- C++职责链模式
- Newbe.Claptrap 框架入门,第四步 —— 利用 Minion,商品下单
- 使用 NextCloud + COS 搭建个人网盘
- Shader基础技巧整理
- 隐秘的物理粒子系统与渲染 !Cocos Creator LiquidFun !
- 一起用Gradle Transform API + ASM完成代码织入呀~
- 掩盖浏览痕迹不会被发现的方法【逗】
- webpack实战——样式预处理
- 前端防止浏览器访问旧版 js 和 css 的优化思路
- 少数派实测报告:AI巨无霸模型GPT-3 | 附送API 调用方法「AI核心算法」
- Qt音视频开发19-海康sdk录像存储
- 单元测试在深度学习中的应用 | 附代码「AI产品/工程落地」
- 实现 AOP 的三种方式
- Spring Boot 配置