| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 元组不可变,你真的确定吗?有了列表,元组存在的意义又是什么?【一文搞懂】 -> 正文阅读 |
|
[Python知识库]元组不可变,你真的确定吗?有了列表,元组存在的意义又是什么?【一文搞懂】 |
一、前言学过python的小伙伴都知道,python有一种数据类型叫元组,它与列表很相似! 而元组与列表最让我们熟知的区别就在于元组不可变! 类似下面的代码执行的话会直接报错:
报错信息 但元组真的是不可改变的吗?下面的这段代码可能会让你心生疑惑 我们定义一个元组它的值为
输出结果: 这结果不是改变了吗!!! 那为啥都说元组不可变!!! 二、分析其实说元组不可变实际上没有错,它指的是元组里元素的内存地址不可改变 我们把改变前和改变后的元素id打印出来,会发现他们是一样的
输出结果 至于为什么修改了元素的值,元素的内存地址未改变。是因为该元素的类型是dict,而dict又是一个可变类型,仅仅改变里面的值的话不会改变其内存地址(详情可参考:python不可变类型和可变类型讲解) 所以在元组中修改它的值是可以的。 三、为什么有了列表还要有不可修改的元组呢?这里从三个方面做解答1.元组性能优于列表 元组占用的空间比列表少 我们仅仅定义了6个相同的元素,分配的空间大小就相差了快1倍!
输出结果 另外,在Python的垃圾回收机制下,如果一些变量不再使用了,Python会回收它们所占用的内存并返还给操作系统,以便让其他变量或其他应用使用这部分内存。 但是对于一些静态变量,比如元组,当它不被使用并且占用空间不大时,Python 会暂时缓存这部分内存。这样,下次我们再创建同样大小的元组时,Python 就可以不用再向操作系统发出请求,去寻找内存,而是可以直接分配之前缓存的内存空间,这样就能大大加快程序的运行速度! 2.元组可以作为字典key而列表不行 输入下面的代码执行的话会直接报错!
输出结果
输出结果 3.工厂函数 这里就要提到python的一个工厂函数具名元组(namedtuple) 具名元组是 python 标准库 collections 中的工厂函数。它接受两个参数,第一个参数表示类的名称,第二个参数是类的字段名。后者可以是可迭代对象,也可以是空格隔开的字符串。然后,我们通过一串参数的形式将参数传递到构造函数中。这样,我们既可以通过字段名访问元素,也可以用索引访问元素。 只讲具名元组,可能不太好理解。如果称之为带字段名的记录,你可能就清楚了。 现在我们创建一个人员的基础信息类People 它有三个属性:姓名name、性别sex、年龄age 现在创建一个姓名叫张三,22岁的小伙儿,再打印出他的信息
输出结果 还可以直接将具名元组转化为orderdict(在上述代码末尾加入下列代码)
输出结果 四、总结元组是一种很强大的可以当作记录来用的数据类型,这才是他存在的价值和意义所在! 只是作为一个不可变的列表更被大家所熟知而已。 分享暂时到这里,小伙伴们点赞、收藏、评论是对我最大的支持!!往期博文 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 11:53:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |