元组
列表非常适合存储在程序的整个生命周期中可能发生变化的项目集合。 当您处理网站上的用户列表或游戏中的角色列表时,修改列表的能力尤为重要。 但是,有时您会希望创建一个无法更改的项目列表。 元组允许你这样做。 Python 将不能改变的值称为不可变的,不可变的列表称为元组。
定义元组
一个元组看起来就像一个列表,除了你使用圆括号而不是方括号。 定义元组后,您可以使用每个项目的索引访问单个元素,就像访问列表一样。
例如,如果我们有一个应该始终具有特定大小的矩形,我们可以通过将尺寸放入元组来确保其大小不会改变:
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
我们使用圆括号而不是方括号来定义元组维度。 然后我们单独打印元组中的每个元素,使用我们一直用来访问列表中元素的相同语法:
200
50
让我们看看如果我们尝试更改元组 dimensions 中的一项会发生什么:
dimensions = (200, 50)
dimensions[0] = 250
此代码尝试更改第一个维度的值,但 Python 返回类型错误。 因为我们试图改变一个元组,而这不能对那种类型的对象进行,Python 告诉我们不能为元组中的项目分配新值:
Traceback (most recent call last):
File "dimensions.py", line 2, in <module>
dimensions[0] = 250
TypeError: 'tuple' object does not support item assignment
这是有益的,因为我们希望 Python 在一行代码试图更改矩形的尺寸时引发错误。
元组在技术上由逗号的存在定义; 括号使它们看起来更整洁、更易读。 如果你想用一个元素定义一个元组,你需要包含一个尾随逗号: |
遍历元组中的所有值
您可以使用 for 循环遍历元组中的所有值,就像处理列表一样:
dimensions = (200, 50, 100)
for dimension in dimensions:
print(dimension)
Python 返回元组中的所有元素,就像它返回列表一样:
200
50
100
修改元组变量
虽然您不能修改元组,但可以为表示元组的变量分配一个新值。 例如,如果我们想改变这个矩形的尺寸,我们可以重新定义整个元组:
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
前四行定义原始元组并打印初始维度。 然后我们将一个新元组与变量 dimensions 相关联,并打印新值。 这次 Python 没有引发任何错误,因为重新分配变量是有效的:
Original dimensions:
200
50
Modified dimensions:
400
100
与列表相比,元组是简单的数据结构。 当您想要存储一组在程序的整个生命周期中不应更改的值时,请使用它们。