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



Pdf көрінісі
бет49/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   45   46   47   48   49   50   51   52   ...   238
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



. После этого 

вывод двух списков наглядно показывает, что каждое блюдо находится в соответ-

ствующем списке.



76    Глава 4  •  Работа со списками

My favorite foods are: 

['pizza', 'falafel', 'carrot cake', 'cannoli']



My friend's favorite foods are: 

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



Вывод в точке  показывает, что элемент 

'cannoli'

 находится в списке 

my_foods


а элемент 

'ice cream'

 в этот список не входит. В точке  видно, что 

'ice cream'

 

входит в список 



friend_foods

, а элемент 

'cannoli'

 в этот список не входит. Если 

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

Например, вот что происходит при попытке копирования списка без использо-

вания среза:

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

# This doesn't work:

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   ...   45   46   47   48   49   50   51   52   ...   238




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

    Басты бет