Более подробное объяснение разницы между мелкой и глубокой копией - PullRequest
0 голосов
/ 25 октября 2018

Пожалуйста, помогите мне понять результат примера № 1-B:

Пример № 1-A:

ref=[3,5,9]
c=ref[:]
c[1]=0
# c equals to [3,0,9], and ref equals to [3, 5, 9]

Пример № 1-B:

ref=[[1,2],[3,4]]
c=ref[:]
c[0][1]=0
# c equals to [[1, 0], [3, 4]], and ref equals to [[1, 0], [3, 4]]

Пример # 2-A:

ref=[3,5,9]
c=copy.deepcopy(ref)
c[1]=0
# c equals to [3, 0, 9], and ref equals to [3, 5, 9]

Пример # 2-B:

ref=[[1,2],[3,4]]
c=copy.deepcopy(ref)
c[0][1]=0
# c equals to [[1,0],[3,4]], and ref equals to [[1,2],[3,4]]

1 Ответ

0 голосов
/ 25 октября 2018

списки являются изменяемыми.строка c=ref[:] в примере 1-B копирует ссылку на подсписки ref в новом списке c Следовательно, вы получаете доступ к тем же подспискам из ref и c

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