请停止在Python中无休止使用列表

开发 后端
然后Python不止列表,还有元组和集合。让我们回顾一下这些特殊的数据类型,并且说明在什么情境下应该使用它们而不是列表。

当你学习不熟悉的新东西的时候,一旦发现某样东西有效,那么你就会坚持使用它而放弃探索更多的可能性。在Python中,那样东西就是列表。

使用列表的感觉就像是在一直重复你最喜欢的特别动作。

然后Python不止列表,还有元组和集合。让我们回顾一下这些特殊的数据类型,并且说明在什么情境下应该使用它们而不是列表。

[[349638]]

元组

元组是不变的有序项目序列。最后一个词——不可变——是这里的秘密武器。一旦定义了元组,就不能更改它。

使用元组的语法几乎与列表相同,只是使用了括号而不是方括号。此外,还可以将列表转换为元组。

  1. # how to define a list 
  2. num_list = [1,2,3,4] 
  3. # how to define a tuple 
  4. num_tuple = (1,2,3,4) 
  5. # use tuple() to convert 
  6. num_convert = tuple(num_list) 

不可变有什么特别之处呢?一开始可能会觉得不方便;但是,每次使用元组而不是列表时,您都会做两件事。

  • 编写更加语义化和安全的代码。当您将变量定义为元组时,您是在告诉自己和代码的任何其他查看者:“这不会改变”。为了防止您遗漏了备注,任何修改变量的尝试都会遇到一个错误。
  • 改善性能。遍历元组将比遍历列表更快。元组比列表的内存效率更高。由于元组中的项数没有变化,因此它的内存占用更简洁。

如果您的列表的大小没有被修改,或者其目的仅仅是用于迭代,那么尝试用元组替换它。

集合

集合是无序的、唯一的项集合。集合不能有重复值,这就是它与列表的区别。

若要定义集合,请使用大括号括起以逗号分隔的项列表。不要将其与创建具有键-值对的字典混淆。与元组一样,可以通过转换另一种数据类型来创建集合。

  1. # how to define a list 
  2. num_list = [1,2,3,4] 
  3. # how to define a set 
  4. num_set = {1, 2, 3, 4} 
  5. # use set() to convert 
  6. num_convert = set(num_list) 

那么,如果两项完全相同会发生什么呢?

  1. nums = {1,2,3,4,4} 
  2. print(nums) # 1,2,3,4 

如您所见,第二个4被删除了。如果原始值是重复项的列表,也会发生同样的情况。

那么,为什么要使用集合而不是列表呢?首先,转换为集合是删除重复值的最简单方法。此外,与任何数据类型一样,set有自己的一组方法。

在比较多个集合时,集合是非常有用的——想想维恩图。union()、intersection()和difference()函数将分别告诉您两个集合之间的组合值、共享值和不同值。

总结

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

虽然列表是舒适的,可靠的,并在早期学习,可能有一个更好的工具。

开始使用元组来更快地处理和保护已声明的数据结构。开始使用集合来确保值的惟一性并利用比较方法。

 

责任编辑:赵宁宁 来源: Python学会
相关推荐

2012-03-07 11:30:07

常小兵宽带宽带资费

2009-10-30 08:44:37

Windows 7系统升级重启

2021-12-25 19:19:18

AndroidAndroid 13安卓

2017-07-26 10:57:29

程序员加班原因

2013-05-29 10:10:34

游戏设计

2019-06-11 12:16:37

新零售互联网巨头

2023-05-24 16:41:41

React前端

2009-03-06 10:10:00

广播风暴网络

2020-10-23 09:57:23

TypeScriptany代码

2021-03-14 22:00:17

MongoDB循环队列

2018-10-08 08:39:07

程序员ZooKeeper腾讯

2018-09-03 09:40:38

华为程序员危机

2018-03-14 09:01:23

区块链

2022-11-02 18:33:09

谷歌Chrome浏览器

2023-11-21 16:34:06

2019-03-01 10:25:52

GitHub代码开发者

2021-06-29 11:15:06

云计算云计算环境云应用

2012-02-29 13:32:52

MWC英特尔移动战略

2009-05-22 10:28:07

2022-04-13 09:57:24

Go语言C语言程序开发
点赞
收藏

51CTO技术栈公众号