Чтобы доказать, что речь в действительности идет о двух разных списках, добавим
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']
Достарыңызбен бөлісу: