Книга «Изучаем Python»



Pdf көрінісі
бет50/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   46   47   48   49   50   51   52   53   ...   238
ПРИМЕЧАНИЕ

Если какие-то подробности в этом примере кажутся непонятными, не огорчайтесь . В двух словах, 

если при работе с копией списка происходит что-то непредвиденное, убедитесь в том, что список 

копируется с использованием среза, как это делается в нашем первом примере .



УПРАЖНЕНИЯ

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

По сравнению со списками структуры данных кортежей относительно просты. 

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

на протяжении жизненного цикла программы.





Достарыңызбен бөлісу:
1   ...   46   47   48   49   50   51   52   53   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет