注意!在python中不要所有操作都用列表
云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!
学习新事物时,我们常常对所有可能发生的情况都不了解。通过反复试错,我们会总结出一个方法或一个规律来应对新事物可能发生的问题,一旦某个方法十分有效,我们就会一直使用这个方法……
在Python中,这个方法就是使用列表。
列表十分方便、它的结构清晰灵活。而且学习列表推导有着一种纯粹的乐趣,就像是中了数据类型中的头奖。
使用列表的感觉就像是在《火影死神大乱斗》游戏中一直使用自己最爱的特殊招式。
和许多东西一样,Python也有一些藏得并不隐蔽的“宝石”,这些“宝石”能够为Python的爱好者们提升技能等级,其中有两个宝石,它们分别是:元组和集合。
现在,让我们来看一看这些特殊的数据类型,并探讨为什么应该使用这些数据类型而不用列表。
元组
元组是不可变的有序项序列。“不可变”——是它的秘密武器。一旦定义了元组,它就不能被更改。
使用元组的规则与列表几乎相同,不同之处只是使用圆括号而不是方括号。另外,还可以获取列表并将其转换为元组。
# how to define a list num_list = [1,2,3,4]# how to define a tuple num_tuple = (1,2,3,4)# use tuple() to convert num_convert = tuple(num_list)
不可变有什么特别之处?乍一看似乎很不方便;但是,每次恰当地使用元组而不是用列表的时候,其实是在做两件事。
· 编写更多有意义的安全代码。当变量被定义为元组时,就是在告诉自己和代码的任何其他查看器:“这不会改变”。为了防止遗漏备忘录,任何修改变量的尝试都将出现错误。
· 提高性能。迭代元组比迭代列表更快。元组比列表更节省内存。由于元组中的项目数不变,因此其内存占用更为简洁。
如果列表的大小未经修改,或者其目的只是用于迭代,那么可以尝试用元组替换。
集合
集合是一个无序的、唯一的数据项组合。一个集合不能有重复值,这就是它与列表的区别。
若要定义集合,就要用大括号括起逗号分隔的项列表。不要和创建具有键值对的词典相混淆。与元组一样,可以通过转换另一种数据类型来创建集合。
# how to define a list num_list = [1,2,3,4]# how to define a set num_set = {1, 2, 3, 4}# use set() to convert num_convert = set(num_list)
那么如果两项完全相同会如何呢?
nums = {1,2,3,4,4} print(nums) # 1,2,3,4
如你所见,第二个“4”被移除了。如果原始值是一个重复项列表,也会发生同样的情况。
那么,为什么要使用集合而不是列表呢?首先,转换为集合是删除重复值的最简单方法。此外,集合和任何数据类型一样都有自己的方法集。
当比较多个集合时,集合是非常有用的,想想维恩图便可知。还有union()、intersection()和difference()函数将分别告诉你两个集合之间的组合值、共享值和不同值。
列表用起来很舒服可靠,但可能还有更好的工具,我们不能停止探索的脚步。
使用元组可以更快地处理并保护开发者声明的数据结构。使用集合可以确保唯一值并利用比较方法。
Python就是要为每个问题都找到合适的工具。
云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【产品解读】阿里云 Elasticsearch 在日志场景中实现“低成本高性能”
本文字数:1435预计阅读:3~5分钟 您将了解:1、数据写入导致的高并发集群打爆问题,如何解决?2、TB、PB级数据如何降低存储成本?3、原生Elasticsearch在时序查询上的瓶颈如何突破?4、峰谷差异大,如何避免闲置成本? 【全链路云上Elastic Stack 全景图】100%兼容开源,9大独有能力 ----> 直播回顾 | 请点击观看 :阿里云Elasticsearch日志增强版介绍 寻根问源 日志场景面临的问题 日志场景是Elasticsearch使用中较为常见的场景,而大量日志数据让企业在追求经济效应与性能效应的同时,对产品本身提出了更为苛刻的要求。 1、高并发写入问题:Elasticsearch在日志数据写入过程中,会同时对主副分片同步写入,还会去写开销较大的trancelog,从而造成Elasticsearch在
- 下一篇
深入浅出 Serverless:优势、意义与应用
Serverless 是炙手可热的技术,被认为是云计算发展的未来方向。尤其是在前端研发领域,使用 Node 开发云函数,可以让前端工程师更加专注于业务逻辑,实现全栈工程师的角色转变。 Serverless 的优势 技术 Leader 和架构师在进行技术选型时会关注很多指标, Serverless 贡献最大的就是研发交付速度(Time to Market)和成本(Cost)。 研发交付速度方面,衡量的指标是 Time to Market,是从需求产出到上线所用的总时长,Serverless 在这方面的优势在技术和团队协作两个视角上均有体现。 一是技术视角。 有一种观点称 Serverless 是一种很简单的技术,我对这种观点并不完全同意。Serverless 架构让用户和底层架构的关系发生了变化,之前开发者需要关注核心业务逻辑、运维和底层架构的治理,在 Serverless 架构中底层的部分由 Serverless 架构提供方来解决。从整个应用系统的角度来看,系统架构的难度和复杂度并没有实质简化。 这里我们不展开讲 Serverless 架构的底层实现细节。只需要了解一点:Serverl...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池