М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет58/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   54   55   56   57   58   59   60   61   ...   334
Байланысты:
Изучаем Python


Глава 4 • Работа со списками
нравятся все блюда из нашего списка, поэтому вы можете создать другой список 
простым копированием нашего:
foods.py

my_foods = ['pizza', 'falafel', 'carrot cake']

friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
В точке 

создается список блюд с именем 
my_foods
. В точке 

создается другой 
список с именем 
friend_foods
. Чтобы создать копию 
my_foods
, программа запра-
шивает сегмент 
my_foods
без указания индексов и сохраняет копию в 
friend_foods

При выводе обоих списков становится видно, что оба списка содержат одинаковые 
данные:
My favorite foods are: 
['pizza', 'falafel', 'carrot cake'] 
My friend's favorite foods are: 
['pizza', 'falafel', 'carrot cake'] 
Чтобы доказать, что речь в действительности идет о двух разных списках, добавим 
новое блюдо в каждый список:
my_foods = ['pizza', 'falafel', 'carrot cake']

friend_foods = my_foods[:]

my_foods.append('cannoli')

friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
В точке 

исходные элементы 
my_foods
копируются в новый список 
friend_foods

как было сделано в предыдущем примере. Затем в 

каждый список добавля-
ется новый элемент: 
'cannoli'
в 
my_foods
, а в точке 

'ice
cream'
добавляется 
в 
friend_foods
. После этого вывод двух списков наглядно показывает, что каждое 
блюдо находится в соответствующем списке.
My favorite foods are: 

['pizza', 'falafel', 'carrot cake', 'cannoli']
My friend's favorite foods are: 

['pizza', 'falafel', 'carrot cake', 'ice cream']


Работа с частью списка
79
Вывод в точке 

показывает, что элемент 
'cannoli'
находится в списке 
my_foods

а элемент 
'ice
cream'
в этот список не входит. В точке 

видно, что 
'ice
cream'
вхо-
дит в список 
friend_foods
, а элемент 
'cannoli'
в этот список не входит. Если бы эти 
два списка просто совпадали, то их содержимое уже не различалось бы. Например, 
вот что происходит при попытке копирования списка без использования сегмента:
my_foods = ['pizza', 'falafel', 'carrot cake']
# Не работает:

friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
Вместо того чтобы сохранять копию 
my_foods
в 
friend_foods
в точке 

, мы зада-
ем 
friend_foods
равным 
my_foods
. Этот синтаксис в действительности сообщает 
Python, что новая переменная 
friend_foods
должна быть связана со списком, уже 
хранящимся в 
my_foods
, поэтому теперь обе переменные связаны с одним списком. 
В результате при добавлении элемента 
'cannoli'
в 
my_foods
этот элемент также 
появляется в 
friend_foods
. Аналогичным образом элемент 
'ice
cream'
появляется 
в обоих списках, хотя на первый взгляд он был добавлен только в 
friend_foods
.
Вывод показывает, что оба списка содержат одинаковые элементы, а это совсем не 
то, что требовалось:
My favorite foods are: 
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
My friend's favorite foods are: 
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']


Достарыңызбен бөлісу:
1   ...   54   55   56   57   58   59   60   61   ...   334




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

    Басты бет