понимание мелкого копирования в словарях Python: Почему обновления в копии не влияют на оригинал
. При работе с словарями Python важно понимать различие между мелким и глубоким копированием. Неглубокая копия создает новый словарь, который содержит ссылки на те же объекты, что и исходный словарь, в то время как глубокая копия создает новый словарь с копиями объектов.
неглубокий копий с DICT.Copy ()
DICT.Copy () метод. Это означает, что новый словарь будет содержать ссылки на те же объекты, которые хранятся в исходном словаре. В результате любые изменения, внесенные в копию, также будут отражены в исходном словаре. new = Original.Copy () new.update ({'c': 3}) Print (Original) # {'a': 1, 'b': 2} print (new) # {'a': 1, 'c': 3, 'b': 2}
В этом примере метод dict.copy () создает новый словарь, новый, который содержит ссылки на те же объекты, что и исходный словарь. Когда мы обновляем копию с помощью {'c': 3}, как оригинал, так и копия отражают это изменение.
Почему обновления в копии не влияют на исходнуюoriginal = {'a': 1, 'b': 2} new = original.copy() new.update({'c': 3}) print(original) # {'a': 1, 'b': 2} print(new) # {'a': 1, 'c': 3, 'b': 2}
, почему обновления в мелковерном копии не влияют на исходное значение, заключается в том, что копия содержит только ссылки на объекты. Когда мы обновляем копию, мы меняем фактические объекты, а только ссылки.
это в отличие от списка, где неглубокая копия содержит ссылку на сам список, а не элементы внутри. Когда мы обновляем копию списка, мы обновляем элементы в списке, которые влияют как на копию, так и на оригинал. Эта функция рекурсивно копирует все объекты в словаре, создавая новую структуру с различными ссылками. Original = {'A': 1, 'B': 2} new = copy.deepcopy (оригинал) new.update ({'c': 3}) Print (Original) # {'a': 1, 'b': 2} print (new) # {'a': 1, 'c': 3, 'b': 2} В этом примере функция copy.deepcopy () создает новый словарь, новый, который содержит копии объектов в исходном словаре. Когда мы обновляем копию, исходный словарь остается незатронутым.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3