Python 数据类型 - 元组
Jinku Hu
2023年1月30日
在本节中,我们将介绍如何创建和使用另外一种 Python 数据类型-元组。Python 元组类似于 Python 列表,不同之处在于元组是不可变的,但列表是可变的。
Python 元组相对于列表的优点
- 元素数据类型不同时主要使用元组,而当元素具有相同的数据类型时使用列表。
- 通过元组遍历更快,因为你无法更新元组。
- 你可以使用元组的不可变元素作为 Python 字典中的一个键值。列表不能作为 Python 字典中的一个键值。
- 元组保证了对数据的保护,因为它们是不可变的。
创建一个元组
你可以使用括号 ()
定义 Python 元组,并用逗号,
来分隔元素。元组可以具有任何数据类型的元素。
>>> x = (3, 'pink', 3+8j)
>>> print('x[0] =', x[0])
x[0] = 3
>>> print('x[0:2] =', x[0:2])
x[0:2] = (3, 'pink')
>>> x[0] = 4
TypeError: 'tuple' object does not support item assignment
如果元组只包含一个元素,比如说是字符串,则该元组不会被视为元组,而是将其视为字符串。举例来说明:
>>> x = ("Python")
>>> print(type(x))
<class 'str'>
你可以在这里看到 x
的数据类型是 str
而不是 tuple
。为了使它能成为一个元组,你可以在其后面添加一个逗号。
>>> x = ("Python",)
>>> print(type(x))
<class 'tuple'>
访问元组元素
元组的元素可以通过以下任何方式访问:
索引
索引操作符 []
可以用来访问元组的元素。元组的索引从 0 开始。如果索引不在范围内(元素未在元组中的索引处定义),则会出现 IndexError
。在这里应该指出,索引必须是一个整数,否则会出现 TypeError
>>> x = (3, 'pink', 3+8j)
>>> print(x[0])
3
>>> print(x[2])
(3+8j)
负索引 Negative Index
同 Python 列表一样,你可以使用负索引来访问元组元素。
>>> l = (2, 4, 6, 8, 10)
>>> print(l[-1])
10
>>> print(l[-2])
8
>>> print(l[-3])
6
切片
切片运算符:
用于从元组中提取一系列元素。
>>> l = (2, 4, 6, 8, 10)
>>> print(l[1:3]) # 打印从位置 1 到位置 3(不含 3)的元素
(4, 6)
>>> print(l[:2]) # 打印从开始到位置 2(不含 2)的元素
(2, 4)
>>> print(l[2:]) # 打印从位置 2(包含 2)开始的元素
(6, 8, 10)
>>> print(l[:]) # 打印整个列表
(2, 4, 6, 8, 10)
拼接元组
两个元组可以同过+
操作符拼接起来。
>>> l = (2, 4, 6, 8, 10)
>>> print(l + (12, 14, 16)
(2, 4, 6, 8, 10, 12, 14, 16)
删除元组
元组元素不可删除,因为元组是不可变的。但是你可以使用 del
关键字来删除整个元组。
l = (2, 4, 6, 8, 10)
del l
Python 元组方法
元组只有两个方法,因为元组是不可变的数据类型:
Python 元组方法 | 描述 |
---|---|
count(a) |
范围元组中元素 a 的数量 |
index(a) |
返回元组中第一个匹配元素 a 的索引 |
适用于元组的内置函数
以下列表中的内置函数适用于元组数据类型。
函数 | 描述 |
---|---|
all() |
当元组中的所有元素都为 True 时返回 True 。当元组为空时,它也返回 True |
any() |
当元组中的任何元素为 True 时返回 True 。当元组为空时,它返回 False |
enumerate() |
将元组的所有元素的索引和值作为元组返回。它返回一个枚举 对象 |
len() |
返回元组中元素的数量或元组的长度 |
tuple() |
将序列(元组,字符串,字典)转换为元组 |
max() |
返回元组中的最大数字 |
min() |
返回元组中的最小数字 |
sorted() |
返回一个排序元组 |
sum() |
返回元组中所有元素的总和 |
Python 元组成员检查
Python in
关键字用来检查给定元素是否是元组的成员。
>>> l = (2, 4, 6, 8, 10)
>>> print(5 in l)
False
>>> print(2 in l
True
Python 元组遍历
你可以使用 for
循环来遍历一个元组。
l = (2, 4, 6, 8, 10)
for i in l:
print(i)
2
4
6
8
10