Мелкая копия и объединение списка, выделенного в Python - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь понять, что происходит, когда я назначаю список (list1) в другую переменную (list2) и объединяю третий список с (list3).

list1 = [3,4]
list2=list1 # shallow copy/hard copy
list1 = list1 + [10,11]
print(list1)
print(list2)

If I apply the Shallow copy or Hard copy concept it should print 
[3, 4, 10,10]
[3, 4, 10,11]

But in practice I get 
[3, 4]
[3, 4, 10, 11]
Can anyone please explain what is happening in this code snippet? I use   Python 3.6 

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Насколько я знаю, в случае мелкой копии ссылка на объект копируется в другой объект. Это означает, что любые изменения, внесенные в копию объекта, отражаются в исходном объекте, и в то время как в печатной копии изменение не отражается обратно в исходный объект, поэтому это зависит от того, какой тип копии вы использовали.

0 голосов
/ 09 мая 2018

Даже если list1 и list2 являются двумя именами для одного и того же объекта (подтвердите с помощью list1 is list2), вы фактически создаете новый объект, когда добавляете другой список с помощью list1 = list1 + [10, 11]. Если вы хотите изменить list1 на месте, используйте list1 += [10, 11]. Тогда вы получите то, что ожидали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...