Если какие-то подробности в этом примере кажутся непонятными, не огорчайтесь . В двух словах,
если при работе с копией списка происходит что-то непредвиденное, убедитесь в том, что список
4-10 . Срезы: добавьте в конец одной из программ, написанных в этой главе, фрагмент,
Кортежи
77
• Выводит сообщение «The first three items in the list are:», а затем использует срез для
вывода первых трех элементов из списка .
• Выводит сообщение «Three items from the middle of the list are:», а затем использует
срез для вывода первых трех элементов из середины списка .
• Выводит сообщение «The last three items in the list are:», а затем использует срез для
вывода последних трех элементов из списка .
4-11 . Моя пицца, твоя пицца: начните с программы из упражнения 4-1 . Создайте копию
списка с видами пиццы, присвойте ему имя friend_pizzas . Затем сделайте следующее .
• Добавьте новую пиццу в исходный список .
• Добавьте другую пиццу в список friend_pizzas .
• Докажите, что в программе существуют два разных списка . Выведите сообщение «My
favorite pizzas are:», а затем первый список в цикле for . Выведите сообщение «My
friend’s favorite pizzas are:», а затем второй список в цикле for . Убедитесь в том, что
каждая новая пицца находится в соответствующем списке .
4-12 . Больше циклов: во всех версиях foods .py из этого раздела мы избегали использования
цикла for при выводе для экономии места . Выберите версию foods .py и напишите два цикла
for для вывода каждого списка .
Кортежи
Списки хорошо подходят для хранения наборов элементов, которые могут из-
меняться на протяжении жизненного цикла программы. Например, возможность
модификации списков жизненно необходима при работе со списками пользовате-
лей сайта или списками персонажей игры. Однако в некоторых ситуациях требу-
ется создать список элементов, который не может изменяться. Кортежи (tuples)
предоставляют именно такую возможность. В языке Python значения, которые
не могут изменяться, называются неизменяемыми (immutable), а неизменяемый
список называется кортежем.
Определение кортежа
Кортеж выглядит как список, не считая того, что вместо квадратных скобок исполь-
зуются круглые скобки. После определения кортежа вы можете обращаться к его от-
дельным элементам по индексам точно так же, как это делается при работе со списком.
Допустим, имеется прямоугольник, который в программе всегда должен иметь
строго определенные размеры. Чтобы гарантировать неизменность размеров, мож-
но объединить размеры в кортеж:
dimensions.py
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
В точке определяется кортеж
dimensions
, при этом вместо квадратных скобок
используются круглые. В точке каждый элемент кортежа выводится по отдельно-
сти с использованием того же синтаксиса, который использовался для обращения
к элементу списка:
78 Глава 4 • Работа со
списками
200
50
Посмотрим, что произойдет при попытке изменения одного из элементов в кортеже
dimensions
:
dimensions = (200, 50)
dimensions[0] = 250
Код в точке пытается изменить первое значение, но 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
Замена кортежа
Элементы кортежа не могут изменяться, но вы можете присвоить новое значение
переменной, в которой хранится кортеж. Таким образом, для изменения размеров
прямоугольника следует переопределить весь кортеж:
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
Стиль
программирования 79
Блок в точке определяет исходный кортеж и выводит исходные размеры.
В точке в переменной
dimensions
сохраняется новый кортеж, после чего в точке
выводятся новые размеры. На этот раз Python не выдает сообщений об ошибках,
потому что замена значения переменной является допустимой операцией:
Original dimensions:
200
50
Modified dimensions:
400
100
По сравнению со списками структуры данных кортежей относительно просты.
Используйте их для хранения наборов значений, которые не должны изменяться
на протяжении жизненного цикла программы.
Достарыңызбен бөлісу: