Изучаем Python | страница 54



Допустим, имеется прямоугольник, который в программе всегда должен иметь строго определенные размеры. Чтобы гарантировать неизменность размеров, можно объединить размеры в кортеж:

dimensions.py

(1) dimensions = (200, 50)

(2)print(dimensions[0])

print(dimensions[1])

В точке (1) определяется кортеж dimensions, при этом вместо квадратных скобок используются круглые. В точке (2) каждый элемент кортежа выводится по отдельности с использованием того же синтаксиса, который использовался для обращения к элементу списка:

200

50

Посмотрим, что произойдет при попытке изменения одного из элементов в кортеже dimensions:

dimensions = (200, 50)

(1) dimensions[0] = 250

Код в точке (1) пытается изменить первое значение, но Python возвращает ошибку типа. По сути, так как мы пытаемся изменить кортеж, а эта операция недопустима для объектов этого типа, Python сообщает о невозможности присваивания нового значения элементу в кортеже:

Traceback (most recent call last):

File "dimensions.py", line 3, in

. .dimensions[0] = 250

TypeError: 'tuple' object does not support item assignment

И это хорошо, потому что мы хотим, чтобы Python сообщал о попытке изменения размеров прямоугольника в программе, выдавая сообщение об ошибке.

Перебор всех значений в кортеже


Для перебора всех значений в кортеже используется цикл for, как и при работе со списками:

dimensions = (200, 50)

for dimension in dimensions:

. .print(dimension)

Python возвращает все элементы кортежа по аналогии с тем, как это делается со списком:

200

50

Замена кортежа


Элементы кортежа не могут изменяться, но вы можете присвоить новое значение переменной, в которой хранится кортеж. Таким образом, для изменения размеров прямоугольника следует переопределить весь кортеж:

(1) dimensions = (200, 50)

print("Original dimensions:")

for dimension in dimensions:

. .print(dimension)

. .

(2)dimensions = (400, 100)

(3)print("\nModified dimensions:")

for dimension in dimensions:

. .print(dimension)

Блок в точке (1) определяет исходный кортеж и выводит исходные размеры. В точке (2) в переменной dimensions сохраняется новый кортеж, после чего в точке (3) выводятся новые размеры. На этот раз Python не выдает сообщений об ошибках, потому что замена значения переменной является допустимой операцией:

Original dimensions:

200

50


Modified dimensions:

400

100

По сравнению со списками структуры данных кортежей относительно просты. Используйте их для хранения наборов значений, которые не должны изменяться на протяжении жизненного цикла программы.