«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему обновление неглубого копирования словаря Python не влияет на исходный словарь?

Почему обновление неглубого копирования словаря Python не влияет на исходный словарь?

Опубликовано в 2025-04-14
Просматривать:799

Why Doesn\'t Updating a Shallow Copy of a Python Dictionary Affect the Original?

понимание мелкого копирования в словарях 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