python可变类型和不可变深浅拷贝类型_python3笔记十四:python可变与不可变数据类型+深浅拷贝...

一:学习内容

python3中六种数据类型

python赋值

python浅拷贝

python深拷贝

二:python3六种数据类型

1.六种数据类型

Number(数字)

string(字符串)

List(列表)

Tuple(元祖)

Set(集合)

Dictionary(字典)

2.六种数据类型分类

不可变数据(3个):Number、String、Tuple

可变数据(3个):List、Dictionary、Set

3.六种类型总结

Number(数字):支持 int(整形)、float(浮点型)、bool(布尔型)、complex(复数).  只有一个整数类型int,表示为长整型;没有python2中的long。

String(字符串):字符串使用双引号或是单引号括起来,同时使用反斜杠转义特殊字符;索引以0为开始值,-1为从末尾的开始位置。

List(列表):列表写在 [] 之间,元素之间用逗号隔开;索引以0为开始值,-1为从末尾的开始位置;列表元素类型可以不同,由数字、字符串、列表(所谓的嵌套)组成;有序的对象集合。

Tuple(元组):元组写在()之间,元素之间用逗号隔开;元组元素类型可以不同,由数字、字符串、元组等组成;元组的元素不可变,但是可以包含可变的对象,比如list列表;有序的对象集合;构造一个元素的元组,需要在元素后面加上逗号。

Dictionary(字典):字典写在{}之间,由键(key):值(value)对集合组成,元素之间用逗号隔开;字典中的元素通过键来存取,而不是通过偏移存取;键key必须使用不可变类型,同一个字典中,键必须是唯一的;创建空字典使用 {}。

Set(集合):集合写在{}之间,基本功能是进行成员关系测试和删除重复元素;可使用大括号 {}或者set()函数创建集合;创建一个空集合必须是set(),{}代表的是空字典。

三:python赋值

1.赋值(=):数据完全共享

赋值是在内存中指向同一个对象:

如果是可变(mutable)类型,比如列表、字典、集合,修改其中一个,另一个必定改变

如果是不可变类型(immutable),比如数字、字符串、元组,修改了其中一个,另一个并不会变

2.举例说明--可变类型赋值:列表、字典、集合

====s1是可变类型列表,s1赋值给s2,然后修改s1,s2就会跟着改变

s1 = [1,2,3]

s2 = s1

s1.append(4)

s1

s2

====s3是可变类型字典,s3赋值给s4,然后修改s3,s4就会跟着改变

s3= {"name":"tester"}

s4 = s3

s3["age"] = 18

s3

s4

====s5是可变类型集合,s5赋值给s6,然后修改s5,s6就会跟着改变

s5= set([1,2,3,4])

s6 = s5

s5.add(5)

s5

s6

3.举例说明--不可变类型赋值:数字、字符串、元组

====s1是不可变类型数字,s1赋值给s2,然后修改s1,s2不会跟着改变

s1 = 10

s2 = s1

s1=12

s1

s2

====s3是不可变类型字符串,s3赋值给s4,然后修改s3,s4不会跟着改变

s3 = "testing"

s4 = s3

s3=  "tesing testing"

s3

s4

====s5是不可变类型元组,s5赋值给s6,然后修改s5,s6不会跟着改变

s5 = (1,2,3)

s6 = s5

s5=  (1,2,3,4)

s5

s6

四:python浅拷贝

1.浅拷贝:数据半共享(拷贝第一层的数据,具有自己单独的内存地址;嵌套层即第二层或其他层不拷贝,指向原有的内存地址)

2.原则

只复制一层,他变我不变;其余层,他变我也变。

如果只有一层,就相当于深拷贝了

3.方法-三种

第一种:a = b[:]

第二种:a = b.copy()

第三种:引用copy模块,import copy  |  a = copy.copy(b)

4.举例--浅拷贝

s1 = [1,2,3,[4,5,6]]

#浅拷贝

s2 = s1[:]

#s1第一层改变,s2不会跟着改变

s1[2] = 55

s1

s2

#s1第二层即嵌套层改变,s2也跟着改变

s1[3][0] = 66

s1

s2

图解上述过程:

s2在内存中已经独立出s1第一层的数据,第二层的数据并没有拷贝成功,而是指向了s1中的第二层数据的内存地址

所以就会有:

s1中第一层数据发生变化,s2中第一层数据不跟着改变

s1中第二层数据发生变化,s2中第二层数据也发生变化

五:python深拷贝

1.深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享)

2.原则

他变我也变。

3.方法

引用copy模块,import copy  |  a = copy.deepcopy(b)

4.举例--深拷贝

import copy

s1 = [1,2,3,[4,5,6]]

#深拷贝

s2 = copy.deepcopy(s1)

#s1第一层改变,s2不会跟着改变

s1[2] = 55

s1

s2

#s1第二层即嵌套层改变,s2也不会跟着改变

s1[3][0] = 66

s1

s2

图解上述过程:

s2在内存中已经独立出s1的数据

所以就会有:

s1中第一层数据发生变化,s2中第一层数据不跟着改变

s1中第二层数据发生变化,s2中第一层数据也不跟着改变

原文:https://www.cnblogs.com/miaomiaokaixin/p/11497813.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android手机用wifi连接adb调试的方法

https://www.jianshu.com/p/dc6898380e38 0x0 前言 Android开发肯定要连接pc的adb进行调试,传统的方法是用usb与pc进行连接,操作简单即插即用,缺点是pc上必须得有对应手机的usb驱动程序,对于谷歌亲儿子系列和三星摩托等外国品牌而…

控制台应用程序换换为窗体应用_Epic为开发者设计了一套iPhone使用的运动捕捉应用程序...

玩懂手机网7月13日资讯,我们都知道对于游戏或者是动漫开发者来说,运动捕捉设备是一套非常昂贵的设备,需要非常专业的独立开发人员,大量的时间才能完成,最近Epic为开发者设计了一套iPhone使用的运动捕捉应用程序。这套i…

蚂蚁金服亿级并发下的移动端到端网络接入架构解析

为了与金融从业者、科技从业者共同探讨金融 业务的深层次问题,蚂蚁金服联手 TGO 鲲鹏会上海分会,在 12 月 8 日举办了「走进蚂蚁金服:双十一背后的蚂蚁金服技术支持」活动。蚂蚁金服高级技术专家贾岛为大家分享了《亿级并发下的蚂蚁移动端到…

python3.12答案_编程常见问题

通常,不要使用 from modulename import * 。这样做会使导入器的命名空间变得混乱,并且使得连接器更难以检测未定义的名称。在文件的顶部导入模块。这样做可以清楚地了解代码所需的其他模块,并避免了模块名称是否在范围内的问题。每行导入一个…

如何根据视频的宽屏与竖屏来排序?

原理 宽屏与竖屏是根据 帧高度 与 帧宽度 来区分的 帧高度就是图片高度(纵向的像素尺寸),帧宽度就是图片宽度(横向的像素尺寸),分辨率就是(高度x宽度)。 windows11的文件排序&…

HashiCorp Vault 1.0开源自动解封特性,新增Batch令牌

HashiCorp发布了其秘密管理工具Vault 的1.0版本,并开源了在发生故障或重启后继续使用Vault服务器所需的“自动解封(auto-unseal)”特性。这个版本提供了一种可以用于临时工作负载的新令牌batch。另一个新特性是,Kubernetes auth现…

sap模块介绍_小迈说|SAP究竟有多少模块?

SAP究竟有哪些模块继上一期小迈说SAP!SPA?的区别,相信大部分读者明白了我们与水浴按摩行业的分别,可是仅仅区分名字还不够,SAP还有众多的模块,这些又该怎么去了解呢?这就轮到肩负爱与责任的小迈…

360 再次开源管理平台 Wayne:基于企业级 Kubernetes 集群

2019独角兽企业重金招聘Python工程师标准>>> 奇虎 360 宣布正式开源 Wayne ,这是一个由 360 搜索云平台团队开发的通用的、基于 Web 的 Kubernetes 多集群一站式可视化管理平台。内置了丰富多样的功能,满足企业的通用需求,同时插件…

python setup.py install 出错_python setup.py install 失败

python setup.py install 报错ImportError: No module named setuptools学习光荣之路python课程时,使用python setup.py install安装其他模块时,第一次安装某模块成功了.安装另一模块却报错ImportError: No module named s ...对于python setup&perio…

Node.js 根本没有这样搞性能优化的?

1、使用最新版本的 Node.js 仅仅是简单的升级 Node.js 版本就可以轻松地获得性能提升,因为几乎任何新版本的 Node.js 都会比老版本性能更好,为什么? Node.js 每个版本的性能提升主要来自于两个方面: V8 的版本更新;Nod…

可交付成果、核实的可交付成果、验收的可交付成果?

①可交付成果。指的是在某一过程、阶段或项目完成时,产出的任何独特并可核实的产品、成果或服务。可交付成果可能是有形的,也可能是无形的。【研发完成】 ②核实的可交付成果。是指已经完成,并经过“控制质量”过程检查为正确的可交付成果。…

安装oracle到create inventory时卡住了怎么办_win10系统安装教程(官方工具)

Hi,大家好。对于小白用户,装系统是比较头疼的事,所以今天写一个简单易懂的装系统教程。使用微软官方提供的工具制作U盘启动盘,操作简单,系统纯净,强烈建议小白用户使用。缺点是该工具功能单一,并…

Microsoft Project 排计划的步骤

Microsoft Project 排计划的步骤: 第一步:设置项目信息,开始日期,选择日历; 第二步:编制WBS 第三步:设置前置任务 第四步:设置WBS每个工期 第五步:设置资源名称&#xff…

自建CDN Xnign产品指标

Xnign-X1 Xnign-X1 性能参数参考值L7 HTTP RPS (128并发请求)250W QPSL7 HTTP CPS (128并发请求)110W QPSL7 HTTP RPS (100W并发请求)180W QPSL7 HTTP CPS (100W并发请求)60W QPSL7 …

python表达式的值是 y 和n是什么意思_python中^是什么意思

展开全部在Python" // "表示整数除法。Python其它表达式e69da5e887aa3231313335323631343130323136353331333431353432:Python的表达式写法与C/C类似。只是在某些写法有所差别。主要的算术运算符与C/C类似。, -, *, /, //, **, ~, %分别表示加法或者取正、…

Linux的启动流程简析(以Debian为例)

Linux的启动流程简析(以Debian为例) 正文:前面的文章探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流…

一阶电路中的时间常数_精确移相电路的设计举例

移相电路就是对输入信号(一般是正弦波)进行相位控制,而不改变其幅度,本推文以移相电路为例,展示模拟电路的反馈设计技巧与方法:一、全通滤波器实现移相以上是两种移相电路 的原理,其输出幅度保持不变,移动的…

工作绩效数据、工作绩效信息、工作绩效报告

目录 概念 举例 概念 工作绩效数据:观察,测量,采集到的原始数据 工作绩效信息:对“工作绩效数据”进行加工分析 工作绩效报告:对“工作绩效信息”进行白话 举例 以去健身房为例 1)工作绩效数据&…

tickcount()修改成小时分钟_银行核心系统24小时机制实现总结

本文共2268字 | 建议阅读时间:5分钟作者:张广在核心系统的设计实现中,24小时机制向来是一个重点难点。早期的银行只有柜面一个业务办理渠道,因此当时的综合业务系统,跟随网点的营业时间,分为日起&#xff0…