![Python+Excel办公自动化一本通](https://wfqqreader-1252317822.image.myqcloud.com/cover/221/40795221/b_40795221.jpg)
5.1 元组
元组的概念与列表的概念十分接近,二者最大的不同是元组中的元素是不能进行修改的。列表是使用方括号“[]”创建的,而元组是使用圆括号“()”创建的。元组的嵌套使用得不多,所以本章就不再介绍嵌套的相关内容。
5.1.1 创建元组
创建元组很简单,在大部分情况下只需要使用“()”,并且将各个元素以“,”隔开即可,创建元组的示例如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/093-1.jpg?sign=1739988051-zU5VgggvLazh8LtQ1XoBjEvujiFJIhvd-0-244fd884bca6facb69df915eb558686e)
运行上述代码得到的输出结果如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/093-2.jpg?sign=1739988051-mj7on8XodH082GO7t2QeOzmuLc3rtzJP-0-bf2a63a0772d4d406822eddf105aa553)
由此可见,创建元组还是相当简单的。如果希望创建一个空元组,则可以按照如下方式进行声明:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/093-3.jpg?sign=1739988051-m5rXaJPtaBnoEFrM0ajtXYEP6RnjpDVD-0-567e680b93cc7eff42a12567164f3860)
这样就能创建一个空元组。但是有时候元组可能只存在一个元素,此时就需要特别注意元组的创建方法。如果使用下面的代码创建元组就会达不到目的:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/093-4.jpg?sign=1739988051-nro7pwR5yLFvTU4IqUmJXOLG2nALDuKE-0-b8aa501bf9cad361a4ef9b16fa9692a3)
运行上述代码得到的输出结果如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/094-2.jpg?sign=1739988051-Y3IaKZVnOHMf0R37BUEd3tQ5s9ok4VLl-0-35148a68be22a29072f86b6108866998)
由输出结果可以看出,创建的不是元组,而是字符串和数字。如果是只有一个元素的元组,则需要按照如下形式进行定义:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/094-3.jpg?sign=1739988051-zZElGxz4KfQ7c6hpuXgI4nK6yh9HTLwT-0-543bfbdbe60f68d96baacf39faaa76c5)
上述代码在创建过程中加入了“,”,这样Python将识别为元组,而不是字符串和数字。另外,也可以使用内置函数tuple创建元组,如代码清单5-1所示。
代码清单5-1:使用内置函数tuple创建元组
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/094-4.jpg?sign=1739988051-rhgOwIEHKRVPRDe2dh5WNxjArz75s0v5-0-b3ece8c466269fdfefbf89b951ff4d01)
5.1.2 遍历元组
元组的元素是不能修改的,但是可以实现访问元素、连接元组和删除元组等操作。首先是遍历元组,如代码清单5-2所示。
代码清单5-2:遍历元组
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/094-5.jpg?sign=1739988051-hAbns01tGyywCWOB46S940j6HiOE8RPL-0-49a8626af0918f3a8c6666d987081788)
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/095-1.jpg?sign=1739988051-ha7QvzUb5Kc0B7ZUHaeo9Y2r2A6r4QXZ-0-15aeda26e2138780b3bc72102a80e76b)
上述代码展示了3种遍历元组的方法,前面已经介绍了列表的遍历,所以这些内容不难理解。
5.1.3 修改和删除元组
元组和列表最大的不同是元组中的元素是不能修改的。修改或删除元组中的元素都会触发异常,如下所示:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/095-2.jpg?sign=1739988051-gosVmnwyKZyDZzoDBPIZnU4JScjsUHqH-0-a52b071651ec994d115df39b191ddb91)
尝试修改或删除元组中的元素都会发生异常。但元组整体可以重新赋值或删除,如下面的代码是合法的:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/095-3.jpg?sign=1739988051-Y0SNV9PcmhvFxm1GG5QHk9lxGXlBHS0S-0-8e67c1c59684292066b2d538e016b229)
注意 什么时候使用元组?
上面没有介绍什么时候使用元组。由于元组中的元素不可以修改和删除,因此元组一般用于那些固定且需要防范窜改的数据,如下所示:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/095-4.jpg?sign=1739988051-n1CfvCLT3PfQ8CnUUcr6xaKbwM3SV57e-0-2448303eb3f733082c94f9889a223e77)
上述代码将四大名著定义为一个元组,这样后续就不能再进行修改,实际上也没有必要修改,因为四大名著就特指它们,这样也可以防止后面的代码窜改数据,造成不必要的错误。而性别也只有男和女之分,当然有时候由于调查困难,一时难以知道人的性别,这时可以填写“未知”。
注意 整体删除和重新赋值元组的内幕
整体删除元组只是在变量表中删除对应的变量符号,使之不能在后文使用,原有的元组在内存中交由Python解释器处理。而重新赋值是创建新的元组,然后使变量表中的变量地址指向新的元组,原有的元组依旧交由Python解释器处理。
5.1.4 截取元组
与字符串和列表一样,元组可以进行截取,同时下标的规则也是相同的,所以本节就不再深入讨论下标的相关问题。下面通过代码清单5-3介绍如何截取元组。
代码清单5-3:截取元组
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/096-1.jpg?sign=1739988051-x1lklJ0JKNkG1wVImiH5PR6Awr8xvTjH-0-a0e84b3a774cf54f9ab5c7a2e6d22933)
上面的截取方法和字符串与列表的截取方法基本相同。对于使用反向下标截取,笔者依旧推荐读者使用元组的长度来控制,一方面是使用元组的长度可读性高,另一方面是可以防止下标越界。
5.1.5 其他常见的操作
元组还有其他常见的操作,和列表大同小异,下面通过代码清单5-4来说明。
代码清单5-4:元组其他常见的操作
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/096-2.jpg?sign=1739988051-aWGeBrqTjmtIonVZMveTaYADtlKIDHmR-0-b575ff95236cbc4a8334b2453447d4f9)
代码中的注释已经非常清楚,供读者参考。
5.1.6 关于元组的函数
由于元组中的元素不能修改,因此元组内部并无自己独特的函数,一般存在4个内置函数,如表5-1所示。
表5-1 Python中关于元组的4个内置函数
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/097-2.jpg?sign=1739988051-RZxgLrd9IOJHy1UQ9pJGs7J9FqdZrKss-0-8b0aaac490c0a93c29f0a1f119a178ca)
这些函数还是比较简单的,其中len函数和tuple函数在本章前面的例子中也使用到了,所以本节不再进行详细的讲解,只通过代码清单5-5来展示它们的使用。
代码清单5-5:关于元组的函数
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/097-3.jpg?sign=1739988051-cUvDsqQNu4vMy6ftnstfNK8kzy0ff9BM-0-e52956223eec92cfd71c39837d9c2f43)