购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6 元组、集合和字典

本节将会详细介绍元组、集合和字典的具体使用方法。元组又称为只读的列表,列表和元组最大的区别是列表的元素是可变的,而元组的元素是不可变的。值得注意的是,在创建只有一个元素的元组时,需要在这个唯一的元素后添加逗号,不然Python会将这个圆括号当成数学运算里的圆括号处理。

常用的元组方法包括count()和index()。元组不能使用类似于列表的insert()等方法,这是因为元组一旦创建,其元素不能添加和更改。元组关于count()和index()的使用方法和列表类似,以下代码展示了如何使用元组的这两个方法。

由于元组的元素不能更改,因此元组不能复制自己,Python也没有给元组提供复制的方法。以下代码对比了元组和列表的自我复制的区别。列表使用list()函数自我复制会生成一个新的列表,而元组使用tuple()函数自我复制不会生成一个新的元组。

通过在命令窗口输入print(dir(set))可以查看集合的所有方法。Python中的集合和数学中定义的集合非常类似,都具有确定性、互异性和无序性等特点,正因为这些特点,集合很适合用于筛查某数组中重复的元素。

和数学中的集合一样,Python中的集合可以使用并集、交集、差集和对称差集进行运算。如图1-33所示为并集、交集、差集和对称差集的操作。

图1-33 常用的集合运算

以下代码展示图1-33对应的几个例子。

下面是字典的一个简单例子。

>> stu1 = {"Name":"John","Age":25,"Dept":"Math"}
>> print("{0} is {1} years old at {2}
Department".format(stu1["Name"],stu1["Age"],stu1["Dept"]))

在以上例子中,创建了一个字典用于记录一个学生的名字、年龄和学院信息,并且通过字典的键访问对应的值。值得注意的是,字典中的元素是无序的,因此字典中的元素并不能通过索引访问。

字典还可以通过两个已经存在的列表或元组创建,如下例子所示,在这个例子中,用到了zip()函数。zip()函数按照默认顺序,对两个数据序列一一配对。需要注意的是,不可以使用两个集合来创建字典,这是因为集合是无序的,会导致新构建的字典中的键和值的匹配出现混乱。比如,集合A是{"Jack","John", "Josh"},集合B是{20,25,22},读者希望的配对情况是"Jack":20,"John":25,"Josh":22。而实际出现的配对情况可能是"Josh":25,"John":20,"Jack":22。

在以上例子中,不管是由列表还是元组创建的字典,大家会发现一个规律:输出的字典中的元素(键值对)的顺序和定义的顺序是一致的。这是因为从Python 3.7版开始,字典中的元素的默认顺序和定义时的顺序一致。对于其他低版本的Python,用户需要使用collections.OrderedDict()函数来使得字典中的元素顺序和定义时的顺序一致。此外,在创建字典时,读者还需要注意两点:①字典中的键不能重复;②由于字典的键是不可更改的,因此字典的键可以是数字、字符串或元组,但不能是列表,如下例所示。

下面的代码给出了几种常用字典方法的例子。

前文提到的列表推导式除了应用于生成列表的元素以外,还应用在集合和字典之中。然而,需要注意,元组不能使用列表推导式。以下代码对比了在列表、集合、元组和字典中使用列表推导式的情况,请读者尝试运行。

在运行上述代码后,读者能发现,当对元组使用列表推导式后,生成的数据类型是generator而不是元组。 生成器 (generator)和 迭代器 (iterator)是Python的一个重要功能,第二章将会详细介绍生成器和迭代器的使用。在上例代码中,生成器和next()函数联合使用,逐个地显示生成器中的元素。

对于字典生成器,它们往往也能使得一些字典操作变得简捷。字典生成器常常应用于删除字典中某些键和对应的值,具体例子如下的代码所示。

本章详细地介绍了Python的发展历史和Python的开发工具Spyder的使用,以及Python的多种数据序列的使用,包括列表、元组、集合和字典。第2章将会介绍Python的其他编程基础知识。 yzkyap1CXTw9xSd2hnu2QzMVfCadmN4X1YMaBiOsAPHe0uPK/OUwINf0Ft+tnT3F

点击中间区域
呼出菜单
上一章
目录
下一章
×