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]. Это различие между изменением объекта и изменением ссылки в переменной. Присваивание само по себе не делает ни поверхностную, ни глубокую копию.