2.5.2 元组类型 tuple

最后更新于:2022-04-02 00:26:20

### 2.5.2 元组类型 tuple 和列表类似,元组也是数据集合体的一种。尽管很多编程语言都没有提供内建的元组数 据类型,但实际上元组类型是非常有用的。在数学中,表示平面或空间中的点需要用到元组 (x,y)或(x,y,z),一般的向量也是元组 v = (v1, ..., vn)。现实中很多信息都可以表示为元组,例 如一对夫妻可以表示为形如(husband,wife)的二元组,超市购物打印出来的单据是形如(商品 名称,单价,数量,总价)的元组的列表,通讯录中记录了大量形如(姓名,电话,地址)的元组,等 等。 Python 提供了元组类型 tuple,该类型的字面值形式是用一对圆括号括起来并以逗号 分隔的多个成员。例如: ``` >>> t = (1,2,3) >>> t (1, 2, 3) >>> type(t) ``` 和空列表一样,没有成员的元组是空元组,用()表示。比较特殊的是,如果元组只有 一个成员,仍然需要在该成员后面加上逗号,例如: ``` >>> (8,) (8,) >>> (8) 8 ``` 可见 Python 将(8)解释为单个数值 8,而不是元组。 和列表一样,可以通过索引来访问元组的成员。例如: ``` >>> t[0] 1 >>> t[0:2] (1, 2) ``` 注意,元组值用圆括号,通过索引访问元组的成员则用方括号。 同样地,列表运算基本上都适用于元组。例如: ``` >>> t + (4,5) (1, 2, 3, 4, 5) >>> 3 * t (1, 2, 3, 1, 2, 3, 1, 2, 3) >>> len(t) 3 ``` 但是,元组和列表之间有个重要的不同:元组是不可更改的。一旦创建了元组,该元组就不能修改、添加、删除成员。在这一点上元组和字符串是相似的。例如如果要将元组 t 的 第 3 个分量改为 8,下面的做法是不行的: ``` >>> t[2] = 8 Traceback (most recent call last): File "", line 1, in t[2] = 8 TypeError: 'tuple' object does not support item assignment ``` 实在想修改元组的话,只能通过创建新的元组来迂回达到目的。例如: ``` >>> t = t[0:2] + (8,) >>> t (1, 2, 8) ``` 例中将 t 的前两个成员和单元素元组(8,)合并,创建了一个新元组,然后将此元组赋值给t。 更多关于元组的知识将在第 6 章介绍。
';