列表非常适合用于存储在程序运行期间可能变化的数据集。Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
4.5.1 定义元组
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。例如,如果有一个大小不应改变的矩形,可将其长度和宽度存储在一个元组中,从而确保它们是不能修改的:
dimensions = (200,50)
print(dimensions[0])
print(dimensions[1])
我们首先定义了元组dimensions,为此我们使用了圆括号而不是方括号。接下来,我们分别打印该元组的各个元素,使用的语法与访问列表元素时使用的语法相同:
200
50
下面来尝试修改元组dimensions中的一个元素,看看结果如何:
dimensions = (200,50)
dimensions[0] = 250
第二行的代码试图修改第一个元素的值,导致Python返回类型错误消息。由于试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值:
代码试图修改矩阵的尺寸时,Python报告错误。
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)
我们首先定义了一个元组,并将其存储的尺寸打印了出来;接下来,将一个新元组存储到变量dimensions中; 然后,打印新的尺寸。这次,Python不会报告任何错误,因为给元组变量赋值是合法的:
Original dimensions:
200
50
Modified dimensions:
400
100
相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都不变,可使用元组。
动手试一试
#4-13 自助餐: 有一家自助式餐馆,只提供五种简单的食品。请想出五种简单的食品并将其存储在一个元组中。
#使用一个 for 循环将该餐馆提供的五种食品都打印出来。
#尝试修改其中的一个元素,核实 Python确实会拒绝你这样做。
#餐馆调整了菜单,替换了它提供的其中两种食品。请编写一个这样的代码块:给元组变量赋值,并使用一个 for 循环将新元组的每个元素都打印出来。
buffets = ('noodle','rice','chicken','ice cream','cake')
for buffet in buffets:
print(buffet)
buffets[0] = 'apple'
print(buffets)
buffets = ('noodle','rice','chicken','ice cream','cake')
print('Original buffets:')
for buffet in buffets:
print(buffet)
print('\nModified buffets:')
buffets = ('juice','rice','chicken','ice cream','noodle')
for buffet in buffets:
print(buffet)