6.16 元组

实际上元组是跟列表非常相近的另一种容器类型。元组和列表看起来不同的一点是元组用的是圆括号而列表用的是方括号。而功能上,元组和列表相比有一个很重要的区别,元组是一种不可变类型。正因为这个原因,元组能做一些列表不能做的事情……用做一个字典的key。另外当处理一组对象时,这个组默认是元组类型。

通常情况下,我们会先介绍可用于大部分对象的操作符和内建函数,然后是介绍针对序列类型的,最后是总结一下仅适用于元组类型的操作符和内建函数。不过,由于元组类型跟列表类型有着如此多的共同之处,按照这种讲法我们会重复非常多的上一节的内容。为了避免太多重复信息,我们会讲解元组和列表在应用于每一组操作符和内建函数上时的区别,然后讨论一下元组的不变性和其他的特性。

1. 如何创建一个元组并给它赋值

创建一个元组并给他赋值实际上跟创建一个列表并给它赋值完全一样,除了一点,只有一个元素的元组需要在元组分割符里面加一个逗号(,)以防止跟普通的分组操作符混淆。不要忘了它是一个工厂方法!

6.16 元组 - 图1

2. 如何访问元组中的值

元组的切片操作跟列表一样,用方括号作为切片操符([]),里面写上索引值或者索引范围。

6.16 元组 - 图2

3. 如何更新元组

跟数字和字符串一样,元组也是不可变类型,就是说你不能更新或者改变元组的元素。在6.2和6.3.2节里,我们是通过现有字符串的片段再构造一个新字符串的方式解决的,对元组同样需要这样。

6.16 元组 - 图3

6.16 元组 - 图4

4. 如何移除一个元组的元素以及元组(本身)

删除一个单独的元组元素是不可能的。当然,把不需要的元素丢弃后,重新组成一个元组是没有问题的。

要显示地删除一整个元组,只要用del语句减少对象引用计数。当这个引用计数达到0的时候,该对象就会被析构。记住,大多数时候,我们不需要显式的用del删除一个对象,一出它的作用域它就会被析构,Python编程里面用到显式删除元组的情况非常之少。

del aTuple