CodeGym /课程 /Python SELF ZH /元组 (Tuple)

元组 (Tuple)

Python SELF ZH
第 8 级 , 课程 1
可用

10.1 元组及其特性

元组是 Python 中四个内建集合类型之一。

如你所知,Python 有几个内建数据类型,可以存储一组对象。它们是 list — 列表,tuple — 元组,set — 集合,dictionary — 字典。今天我们来看第二个,也是最简单的之一 — 元组。

元组 (tuple) 可以存储多个元素。每个元素都有自己的顺序号,这使得元组是有序的 — ordered。这点上它和列表很像。

元组是不可变的 — 一旦创建就不能更改,这使得它非常适合存储不应在程序中更改的数据。因此它的第二个特性是不可变性 (immutable)。

至于重复项 — 元组中可以多次存储相同的元素 — allow duplicates。再一次,和列表很像。

有用。可以把元组想象成一个不可变的列表,只不过它使用的是圆括号 () 而不是方括号 []

10.2 创建元组

元组是不可变的元素序列,可以通过不同方式创建。以下是最常见的方法:

直接声明:

元组可以通过圆括号 () 和逗号来分隔元素直接创建。


tuple1 = (1, 2, 3)
tuple2 = ("apple", "banana", "cherry", "apple", "cherry")
tuple3 = (1, "apple", True)

无括号:

Python 允许不使用括号创建元组,只需用逗号分隔元素即可。


tuple1 = 1, 2, 3
tuple2 = "apple", "banana", "cherry", "apple", "cherry"
tuple3 = 1, "apple", True

单个元素的元组:

创建单个元素的元组时,必须在该元素后加逗号


tuple1 = (1,)
tuple2 = ("apple",)
tuple3 = (True,)

使用 tuple():

函数 tuple() 将可迭代对象转换为元组。这可以是列表、字符串或任何其他可迭代对象。


list_to_tuple = tuple([1, 2, 3])

10.3 元组元素的拆包

和元组一起工作时,可以将多个元素打包进一个元组,也可以将元组拆包成多个变量,这使得代码更简洁:

基础拆包

将元组拆包进变量的例子:


my_tuple = (1, 2, 3)
x, y, z = my_tuple

这里变量 xyz 分别得到值 123

扩展拆包

Python 也支持扩展拆包,允许将元组的一部分提取到列表中,使用符号 *:


a, *b, c = (1, 2, 3, 4, 5)  # a = 1, b = [2, 3, 4], c = 5

在此例中,ac 得到第一个和最后一个值,而 b 变成包含所有其他值的列表。

在函数中的应用

元组拆包常用于传递参数给函数。这在函数接收可变数量参数时尤其有用,或者当参数预先被打包在元组或列表中:


def func(a, b, c):
    print(a, b, c)
        
values = (1, 2, 3)
func(*values)

使用注意事项

元组的拆包要求元组元素的数量与变量的数量精确匹配,否则会产生错误。然而,使用 * 来收集余下的元素可以避免这个错误,使得代码对数据的变化更灵活。

10.4 方法列表

元组是不可变对象,因此它们几乎没有自己的方法。只有两个 😊

函数 count(x):

返回 x 在元组中出现的次数。对于统计某些元素数量很有用。


t = (1, 2, 3, 2, 4, 2)
print(t.count(2)) # 输出 3 

函数 index(x):

返回元素 x 在元组中的第一次出现的索引。如果未找到元素,会引发异常 ValueError


t = (1, 2, 3, 2, 4, 2)
print(t.index(3)) # 输出 2 

虽然这是类 tuple 的所有方法,但这并不意味着无法对其进行处理。可以,只是会稍微复杂一些。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION