Как изменится переменная после переназначения списка

list_b останется пустым списком []. После list_b = list_a обе переменные ссылались на один объект, но присваивание list_a = [1] переназначило только list_a на новый список.

Короткий ответ

Что ответить на собеседовании

list_b останется пустым списком []. После list_b = list_a обе переменные ссылались на один объект, но присваивание list_a = [1] переназначило только list_a на новый список.

Подробный разбор

Ответ с пояснениями

Условие

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

list_a = []
list_b = list_a
list_a = [1]
# какое значение будет у list_b?

Ответ

list_b останется пустым списком []. После list_b = list_a обе переменные ссылались на один объект, но присваивание list_a = [1] переназначило только list_a на новый список.

Исходный пустой список не изменился и продолжает существовать, поскольку на него ссылается list_b. Если бы вместо переназначения выполнялось list_a.append(1), тогда list_b тоже показывал бы [1]. Это различие между изменением объекта и изменением ссылки в переменной. Присваивание само по себе не делает ни поверхностную, ни глубокую копию.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее