【Python】可变数据类型 不可变数据类型 || hash

  •  🚩 WRITE IN FRONT 🚩       

  • 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎
  • 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博主、华为云享专家、阿里云专家博主、掘金优秀创作者、全网粉丝量7w+、个人社区人数累计4w+、全网访问量100w+ 🏅
  • 🆔 本文章内容由 謓泽 原创 如需相关转载请提前告知博主 ⚠
  • 📑 创作时间:2022 年 5 月 2 日 📅
  • 📝 个人主页:謓泽的博客 📃
  • 📣 专栏系列:【Python】系列_謓泽的博客📃
  • 🙌 Gitee:謓泽 (wsxsx) - Gitee.com ⭐️
  • 🎁 点赞👍+ 收藏⭐️+ 留言📝​
  • ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 📩

可变数据类型 🐟 不可变数据类型 

在Python当中的列表(List)字典(Dict) 是属于可变数据类型。

在Python当中的整形(int)浮点型(float)字符串型(string)元组(Tuple) 是属于不可变数据类型。

以上就是可变类型与不可变数据类型这个是要掌握的。

不可变类型:在内存当中一旦进行了定义并且指定了内容之后,便不再允许进行修改了。

不可变类型: 在内存当中分配了空间的话,我们是可以通过变量名调用方法来去修改它的列表或者是字典当中的内容的。通过方法进行调用可以做到通过方法调用(appedn、pop...)列表字典的内容发生变化,但是它们的内存地址是依旧不会发生变化的。示例代码如下↓

listA = ['Python',123456,3.14,'你好','True']
print("追加之前:",listA)
print("前地址:",id(listA))
listA.append(666)
print("追加之后:",listA)
print("后地址:",id(listA))

运行结果🖊 

追加之前: ['Python', 123456, 3.14, '你好', 'True']
前地址: 1642029321408
追加之后: ['Python', 123456, 3.14, '你好', 'True', 666]
后地址: 1642029321408

上述红色颜色字体发现它们的地址都是一样的,从中也可以说明上述的证实了。

注→id()用来查看变量类型当中的地址的。

那么上述是不可变类型我们来观察下可变类型来看看结果会是怎么样的吧→如下代码所示↓

a = 20
print(id(a))
a = 24
print(id(a))

运行结果🖊 

2689600613264
2689600613392

上述红色标注粗体字可以证实这个是不可变类型,改变之后就会改变了它们内存的地址了。

id() 

辨别变量是可变数据类型还是不可变数据类型,我们只需要使用 id() 函数就可以查看变量在内存地址当中的变换即可。

如果 id(变量) 的值不变,即说明该变量是不可变数据类型。

如果 id(变量) 的值变化,即说明该变量是可变数据类型。

不可变数据类型分析 

不可变数据类型分析,使用 id() 函数来查看变量的内存地址。

输出 int_a1 变量的内存地址,输出 int_b1 变量的内存地址。

示例代码如下所示 👇

int_a1 = 1
int_b1 = 1
print(id(int_a1))
print(id(int_b1))

运行结果如下 👇

94121337434592
94121337434592 

从中可以发现数据类型是不可变的!

用图表示上述代码,如下所示 👇 

那么如果我们修改上述代码当中变量int_a1当中的值此刻内存地址会发生什么样的变换呢?到底会发生变换还是不会发生变换。

示例代码如下所示 👇 

int_a1 = 2
int_b1 = 1
print(id(int_a1))
print(id(int_b1))

运行结果如下 👇

94216515551744
94216515551712

从这里可以发现改变int_a1当中的值,没有修改b1当中的值数据类型都是(int)从中会发生内存地址的改变。

可变数据类型分析 

可变数据类型分析,以列表为示例。

输出 a 变量的内存地址,输出 b 变量的内存地址。

示例代码如下所示  👇

a = [1,2,3,4]
b = [1,2,3,4]
print(id(a))
print(id(b))

运行结果如下 👇

140510981916096
140510981930432 

在上述代码示例当中,分别定义了列表 a = [1,2,3,4] 和 b = [1,2,3,4]。通过下列图中所示的内存分布图来了解变量 a 和 b 是怎么分配内存的。

那么让我们来思考下既然列表是可变数据类型,那么在定义两个列表指向同一内存空间时候,如果修改其中一个列表元素,另外一个列表中元素是否被修改。 

定义列表a,然后赋值给b,查看内存地址

示例代码如下所示 👇 

a = [1,2,3,4]
b = a
print(id(a),id(b))

运行结果如下 👇 

140533352129984 140533352129984

通过赋值可以看出,变量 a 和 b 都指向了统一空间没有修改。

修改列表a,查看列表b 是否改变 

示例代码如下所示 👇 

a = [1,2,3,4]
b = [1,2,3]
print(id(a))
print(id(b))

运行结果如下 👇 

139793869161920
139793869176256 

提示:因为a、b指向的都是同一列表,为可变数据类型。因此对 a、b任意一个列表进行修改都会影响到另外一个列表的值。

哈希(hash) 

Python 当中内置有一个名字叫做 hash(o) 的函数。

  • 接收一个不可变类型的数据作为它的参数,注:整形(int)浮点型(float)字符串型(string)元组(Tuple) 是属于不可变数据类型。
  • 接收一个不可变的数据类型作为参数。『python的特点』
  • 返回 结果是一个整数(int)

哈希是一种算法,起作用就是提取数据的特征码『指纹』

  • 相同的内容 得到 相同的结果。
  • 不同的内容 得到 不同的结果。
  • 指纹的意思:如果是同一个人指纹就是相同的,如果是不同的人指纹就是不同的。

示例代码如下↓

# 不可变数据类型
print(hash(1))
# 可变数据类型
print(hash([123]))

运行结果如下↓

1

TypeError: unhashable type: 'list'

相信当你看到这个也就对python当中的哈希也就有所了解了。

拓展key

键值的key必须是不可变数据类型。

键值对的value可以是任意数据类型。这个要注意下对于hash

dict = {hash([123]):123}
print(dict)

运行结果🖊 

    dict = {hash([123]):123}
TypeError: unhashable type: 'list'

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

神经网络算法(带你了解 原理 实践)

目录 引言 一、神经网络的历史背景与重要性 二、神经网络算法在现代机器学习中的地位与应用 三、神经网络基础知识​编辑 (一)神经元模型与工作原理 (二)网络结构 (三)激活函数的作用与常见类型 四…

云原生架构设计:开放应用模型(OAM)的重要性与实践

在当今云计算时代,云原生架构已经成为许多企业追求的理想状态,在云原生架构设计中,开放应用模型是至关重要的一部分。本文灸哥将和你一起探讨开放应用模型的概念、意义以及实践方法,以帮助大家更好地理解和应用云原生架构中的开放…

guava的使用

对数组操作前判断是否会越界&#xff1a; List<String> s new ArrayList<>();System.out.println(Preconditions.checkElementIndex(2,s.size(),"下标长度超过了")); 是否为空 String s null;System.out.println(Preconditions.checkNotNull(s)); 判空…

如何使用LEAKEY轻松检测和验证目标服务泄露的敏感凭证

关于LEAKEY LEAKEY是一款功能强大的Bash脚本&#xff0c;该脚本能够检测和验证目标服务中意外泄露的敏感凭证&#xff0c;以帮助广大研究人员检测目标服务的数据安全状况。值得一提的是&#xff0c;LEAKEY支持高度自定义开发&#xff0c;能够轻松添加要检测的新服务。 LEAKEY主…

HUAWEI华为MateBook D 14 2022款 12代酷睿版集显(NbF-16)工厂模式原厂Windows11预装OEM系统,含F10智能还原功能

系统下载链接&#xff1a;https://pan.baidu.com/s/1kgJvwSq5eOdme7J9PDXIxQ?pwdxvz8 提取码&#xff1a;xvz8 华为笔记本电脑原装出厂系统工厂安装包&#xff0c;含F10功能、系统自带所有驱动、系统属性专属联机支持标志、Office办公软件、华为电脑管家等预装程序&#xf…

练习 5 Web [GXYCTF2019]BabyUpload

[GXYCTF2019]BabyUpload 猜测直接上传txt会被过滤&#xff0c;提示“上传类型也太露骨了吧&#xff01;”按经验传入一个"muma.phtml" 提示过滤了“ph”相关的后缀 传入muma.jpg等图像格式&#xff0c;提示表明复原并检测了文件内容 审查文件后缀Context-type 不能…

机械臂中TCP配置

红色、绿色、蓝色箭头分别代表x、y、z三个方向

电脑解锁后黑屏有鼠标--亲测!!不需要重装系统!!

问题&#xff1a;上周电脑黑屏&#xff0c;只有鼠标&#xff0c;鼠标还不能右键&#xff01;&#xff01; 中招&#xff1a;win10系统最新版火绒安全 &#xff0c;那你有概率获得开机黑屏套餐一份。 原因是&#xff1a;火绒把我们的explorer删除了导致黑屏&#xff0c;这个文…

Java面试篇【并发编程·进阶】常见面试题(2024最新)

并发常见面试题进阶 1.synchronized synchronized关键字解决的是多线程之间访问资源的同步性&#xff0c;synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能被一个线程执行。 监视器锁&#xff08;monitor&#xff09;是依赖于底层的操作系统的 Mutex Lock来…

2024电子商务与互联网技术国际会议(ICECIT 2024)

2024电子商务与互联网技术国际会议&#xff08;ICECIT 2024) 一、【会议简介】 2024电子商务与互联网技术国际会议&#xff08;ICECIT 2024&#xff09;将于2024年在杭州举行。这是一个重要的学术会议&#xff0c;旨在汇集全球的专家、学者和业界领袖&#xff0c;共同探讨电子…

Python爬虫——Requests

目录 简介 基本使用​编辑 ​编辑 安装 一个类型和六个属性 请求类型 GET 代码示例 POST 代码示例 代理 古诗文网绕过验证码登录 总结 简介 Python的Requests库是一个用于发送HTTP请求的常用库。它提供了简单且人性化的API&#xff0c;使得发送HTTP请求变得非常容易。…

【MATLAB源码-第158期】基于matlab的海马优化算法(SHO)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 海马优化器&#xff08;Sea Horse Optimizer, SHO&#xff09;是一种近年来提出的新型启发式算法&#xff0c;其设计灵感来源于海洋中海马的行为模式&#xff0c;特别是它们在寻找食物和伴侣时表现出的独特策略。海马因其独特…

【Flink网络数据传输】OperatorChain的设计与实现

文章目录 1.OperatorChain的设计与实现2.OperatorChain的创建和初始化3.创建RecordWriterOutput 1.OperatorChain的设计与实现 OperatorChain的大致逻辑 在JobGraph对象的创建过程中&#xff0c;将链化可以连在一起的算子&#xff0c;常见的有StreamMap、StreamFilter等类型的…

[C语言]——分支和循环(1)

目录 一.if语句 1.if 2.else 3.分支中包含多条语句 4.嵌套if 5.悬空else问题 二.关系操作符 三.条件操作符 C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是顺序结构、选择结构、循环结构&#xff0c;C语⾔是能够实现这三种结构的&#xff0c;其实我们如果仔细分析&a…

xinput1_3.dll丢失都有什么办法可以有效的解决、xinput1_3.dll导致游戏不能启动怎么办?

使用电脑的过程中是不是会遇到关于某个dll文件丢失的提示&#xff0c;今天想和大家聊的是xinput1_3.dll文件&#xff0c;如果电脑提示xinput1_3.dll丢失有什么办法可以有效的解决&#xff0c;解决办法都有哪些&#xff0c;如果xinput1_3.dll丢失会对电脑有什么影响。&#xff0…

8、Linux-软件安装:rpm和yum;配置yum阿里云镜像源

一、介绍 Linux安装软件有两种方式&#xff0c; ①rpm&#xff1a;安装已有的安装包&#xff0c;类似于Windows中双击exe的安装包程序 ②yum&#xff1a;拉取远程仓库的文件&#xff0c;类似于python的pip install 区别&#xff1a;假设软件A依赖软件B&#xff0c;软件B依赖…

【打工日常】Linux实现可回滚的回收站功能

1.为什么创建可回滚的回收站功能&#xff1f; 为了让运维人员可以有回旋的余地&#xff0c;但是也要保证可以清理不需要的文件。 2.涉及到的文件安全概念&#xff1f; Linux的文件安全概念主要涉及到文件权限和文件系统安全两个方面。 那什么是文件权限&#xff1f; 在Linux系统…

数学建模【整数规划】

一、整数规划简介 整数规划其实是线性规划和非线性规划的一个特殊情况&#xff0c;即有的变量取值只能是整数&#xff0c;不能是小数。这时候就需要一个新的函数来解决问题。 对于整数规划&#xff0c;分为线性整数规划和非线性整数规划 线性整数规划&#xff1a;MATLAB可进…

VS2022打包C#安装包(最新、最全)

开发c#的一个小工具到打包环境碰壁了&#xff0c;在网上找了很多资料耶踩了很多坑&#xff0c;耗时1hour才打包完毕&#xff0c;避免以后碰到类似的问题再次记录&#xff0c;自认为步骤比较全面&#xff0c;如果有帮助麻烦点个赞呗&#xff01;&#xff01;&#xff01; 一、Mi…

MATLAB知识点:循环语句的经典练习题

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 下面我们来看…