文山羊 2020-10-31
当你学习不熟悉的新东西的时候,一旦发现某样东西有效,那么你就会坚持使用它而放弃探索更多的可能性。在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被删除了。如果原始值是重复项的列表,也会发生同样的情况。
那么,为什么要使用集合而不是列表呢?首先,转换为集合是删除重复值的最简单方法。此外,与任何数据类型一样,set有自己的一组方法。
在比较多个集合时,集合是非常有用的——想想维恩图。union()、intersection()和difference()函数将分别告诉您两个集合之间的组合值、共享值和不同值。
总结
Python就是要为每个问题找到合适的工具。