注意!​在python中不要所有操作都用列表

云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

image

学习新事物时,我们常常对所有可能发生的情况都不了解。通过反复试错,我们会总结出一个方法或一个规律来应对新事物可能发生的问题,一旦某个方法十分有效,我们就会一直使用这个方法……

在Python中,这个方法就是使用列表。

列表十分方便、它的结构清晰灵活。而且学习列表推导有着一种纯粹的乐趣,就像是中了数据类型中的头奖。

使用列表的感觉就像是在《火影死神大乱斗》游戏中一直使用自己最爱的特殊招式。

和许多东西一样,Python也有一些藏得并不隐蔽的“宝石”,这些“宝石”能够为Python的爱好者们提升技能等级,其中有两个宝石,它们分别是:元组和集合。

现在,让我们来看一看这些特殊的数据类型,并探讨为什么应该使用这些数据类型而不用列表。

image

元组

元组是不可变的有序项序列。“不可变”——是它的秘密武器。一旦定义了元组,它就不能被更改。

使用元组的规则与列表几乎相同,不同之处只是使用圆括号而不是方括号。另外,还可以获取列表并将其转换为元组。

# 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()函数将分别告诉你两个集合之间的组合值、共享值和不同值。

image

列表用起来很舒服可靠,但可能还有更好的工具,我们不能停止探索的脚步。

使用元组可以更快地处理并保护开发者声明的数据结构。使用集合可以确保唯一值并利用比较方法。

Python就是要为每个问题都找到合适的工具。

云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

原文发布时间:2020-02-12
本文作者:读芯术
本文来自:“读芯术”,了解相关信息可以关注“读芯术

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/744510

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。