4.5 元组
列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这
对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一
系列不可修改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变
的 ,而不可变的列表被称为元组 。
4.5.1 定义元组
元组看起来很像列表,但使用圆括号而非中括号来标识。定义元组后,就可使用索
引来访问其元素,就像访问列表元素一样。
例如,如果有一个大小不应改变的矩形,可将其长度和宽度存储在一个元组中,从
而确保它们是不能修改的:
dimensions.py
❶ dimensions = (200, 50)
❷ print(dimensions[0])
print(dimensions[1])
首先定义元组dimensions (见❶),为此使用了圆括号而不是方括号。接下来,
分别打印该元组的各个元素,使用的语法与访问列表元素时使用的语法相同(见
❷):
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在代码试图修改矩形的尺寸时引发错误。
注意 严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更
清晰。如果你要定义只包含一个元素的元组,必须在这个元素后面加上逗号:
my_t = (3,)
创建只包含一个元素的元组通常没有意义,但自动生成的元组有可能只有一个元素。
4.5.2 遍历元组中的所有值
像列表一样,也可以使用for 循环来遍历元组中的所有值:
dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
就像遍历列表时一样,Python返回元组中所有的元素:
200
50
4.5.3 修改元组变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述
矩形的尺寸,可重新定义整个元组:
❶ dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
❷ dimensions = (400, 100)
❸ print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
首先定义一个元组,