python语言的基本数据类型_python语言基本数据类型-深浅拷贝
.赋值深浅复制
1.字符串(数字):在内存中是一次性创建的,不能直接修改,如需修改,需要重新创建2.列表等可修改的数据类型:在内存中创建时是以链表的形式创建3.字符串、数字:赋值、深浅拷贝都没有意义,因为其永远指向同一个内存地址
定义如下列表:
li = [1, 2, 3]
l2 = [‘a’, li]
浅复制:
l3 = l2.copy()
深复制:
import copy
l4 = copy.deepcopy(l2)
图1 赋值
k1、k2、k3是第一层,k3下一层的0、1是第二层
图2 浅拷贝
图3 深拷贝
实例
# 赋值:只是创建一个变量,该变量指向原来的内存地址
n1 = {"k1": 'fei', "k2": 1235, "k3": ["fly", 19]}
n2 = n1 # 赋值
n1["k1"] = "刘波奇" # 修改第一层k1
print(n1)
print(n2)
n1["k3"][0] = "李日纯" # 通过下标0,修改第二层k3
print(n1)
print(n2)
输出结果:
{'k1': '刘波奇', 'k2': 1235, 'k3': ['fly', 19]}
{'k1': '刘波奇', 'k2': 1235, 'k3': ['fly', 19]}
{'k1': '刘波奇', 'k2': 1235, 'k3': ['李日纯', 19]}
{'k1': '刘波奇', 'k2': 1235, 'k3': ['李日纯', 19]}
# 浅复制:在内存中只额外的创建第一层数据
import copy #导入copy 模块
n1 = {"k1": 'fei', "k2": 1235, "k3": ["fly", 19]}
n3 = copy.copy(n1)
n1["k1"] = "张月兰"
print(n1)
print(n3)
n1["k3"][0] = "陈马斯"
print(n1)
print(n3)
结果:
{'k1': '张月兰', 'k2': 1235, 'k3': ['fly', 19]}
{'k1': 'fei', 'k2': 1235, 'k3': ['fly', 19]}
{'k1': '张月兰', 'k2': 1235, 'k3': ['陈马斯', 19]}
{'k1': 'fei', 'k2': 1235, 'k3': ['陈马斯', 19]}
可以看出当浅拷贝时,改变新的字典时,原来的字典的值也会改变也就是说对于浅拷贝,内存两个变量下值的内存地址是相同的
# 深拷贝
import copy #导入copy 模块
n1 = {"k1": 'fei', "k2": 1235, "k3": ["fly", 19]}
n4 = copy.deepcopy(n1)
n1["k1"] = "黄依馨"
print(n1)
print(n4)
n1["k3"][0] = "杨艺衡"
print(n1)
print(n4)
结果:
{'k1': '黄依馨', 'k2': 1235, 'k3': ['fly', 19]}
{'k1': 'fei', 'k2': 1235, 'k3': ['fly', 19]}
{'k1': '黄依馨', 'k2': 1235, 'k3': ['杨艺衡', 19]}
{'k1': 'fei', 'k2': 1235, 'k3': ['fly', 19]}
对于深拷贝而言,只是值相等,但是内存地址是不同的,改变新的字典中的值,原来字典中的值是不会变化的。
总结:
1:对于不可变对象(如数字或者是字符串),无论是深拷贝还是浅拷贝,内存地址和值都是相同的,没有意义;
2:对于可变的对象,如列表元组,字典类型的:
浅拷贝:值和地址都是相同的
深拷贝:值相同,地址不同
python语言的基本数据类型_python语言基本数据类型-深浅拷贝相关推荐
- python官方的扩展索引_Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展...
列表list定义 L1 =[] L2= [1,2,'abc'] L3=list() L4= list(range(5)) L5= [1,'abc',True,None,[4,5,'abc'],str] ...
- python语言数据类型_Python中的数据类型 | 萧小寒
摘要 Python3中提供有六个标准的数据类型:Number(数字).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictionary(字典). 在这些数据类型中, ...
- python语言程序的特点_Python语言有哪些优点?
2018年主流的十大编程语言中,Python排名第一,被广大使用者誉为"更美好"编程语言.Python语言自身的语言特点,使得他深受开发者的喜爱,那么Python语言到底有哪些优点 ...
- python语言的类型是_Python语言类型
Python是一门动态解释型的强类型语言. 对这句话进行解析,语言分为动态的和静态的,编译型和解释型的,强类型的和弱类型的语言之分. 下面对三种不同维度的类型的语言进行解释: 1.编译型和解释型 差别 ...
- python语言基础项目报告书_Python语言基础01-初识Python
1. Python简介 1.1 Python的历史 Python的创始人为吉多·范罗苏姆(荷兰语:Guido van Rossum) 1989年的圣诞节期间:吉多·范罗苏姆为了在阿姆斯特丹打发时间,决 ...
- python语言程序的特点_Python语言概述及其运行机制详解
即日起,我们将打开一个新的编程世界的大门--Python语言.Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新 ...
- python语言的优缺点论文_Python语言的优缺点是什么呢?
Python这门语言的魅力和影响力已经远超Java.C.C++等编程语言前辈,主流的十大编程语言中,Python排名第一.被广大使用者誉为"更美好"编程语言.也常常被昵称为&quo ...
- python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)
一.python是静态还是动态类型?是强类型还是弱类型? 1.动态强类型语言(不少人误以为是弱类型) 不要傻傻分不清 2.动态还是静态指的是编译期还是运行期确定类型 3.强类型指的是不会发生隐式类型转 ...
- python做算法题优势_Python语言在科学算法中的优势
2019 年第 4 期 信息与电脑 China Computer & Communication 算法语言 Python 语言在科学算法中的优势 刘 瑞 (辽宁师范大学海华学院,辽宁 沈阳 1 ...
- python属于计算机几级_Python语言不仅纳入计算机等级考试科目,还纳入高考科目...
全国计算机等级考试纳入Python 教育部考试中心于2017年10月11日发布了"关于全国计算机等级考试(NCRE)体系调整"的通知,决定对NCRE考试体系进行调整,自2018年3 ...
最新文章
- 爱因斯坦梦断“大统一理论”
- 如果没有了Redis...
- IBM沃森为存储系统开发人员带来的启发
- linux 拨号网关,用LINUX做在一张软盘上的拨号网关 (转)
- ::在sql语句中是什么写法_不懂就问:SQL 语句中 where 条件后 写上1=1 是什么意思...
- centsos7修改主机名 [root@st152 ~]# cat /etc/hostname
- ElasticSearch2.1 基于空间位置geo_query距离计算
- mysql 索引 范围扫描_MySql学习笔记(六):扫描范围
- html + css + js 实现一个打字小游戏(建议收藏)
- 输出100以内的所有素数
- 深度学习入门学习路线及好课推荐
- 【工具】我的键盘(机械键盘)快捷键设置
- android壁纸背景,android – 选择动态壁纸的背景
- 均值不等式中考_中考数学解题技巧方法
- Linux-京东字节百度提前批,一面二面都被问到了awk——实例篇(3)查进程,kill指定进程
- 【功能安全】【ISO26262】整体介绍
- 计算机网络应用底纹怎么弄,Word文档如何设置字符底纹?
- 5G时代,云计算发展的五大新趋势
- 【报告分享】2022百度职业资格考试培训行业洞察-百度营销研究院(附下载)
- 笔记本计算机忘记密码,Windows笔记本电脑忘记开机登录密码忘记怎么办 最新win7/8/10开机密码重置教程...