Как изменится содержимое вложенного списка после переопределения переменной

Будет выведено [[1, 2], [5, 6]]. Переприсваивание l меняет привязку имени, но не изменяет список, на который уже ссылается t.

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

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

Будет выведено [[1, 2], [5, 6]]. Переприсваивание l меняет привязку имени, но не изменяет список, на который уже ссылается t.

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

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

Условие

Определите, какой вывод будет получен в консоль после выполнения следующего кода. Сначала создаётся список l, который помещается вместе с другим списком в составной список t. Затем переменной l присваивается новое значение, отличное от списка. Что будет напечатано?

l = [1, 2]
a = [5, 6]
t = [l, a]
l = "TEST"
print(t)

Ответ

Будет выведено [[1, 2], [5, 6]]. Переприсваивание l меняет привязку имени, но не изменяет список, на который уже ссылается t.

При создании t = [l, a] в него помещаются ссылки на два существующих списка. Операция l = 'TEST' привязывает имя l к строке, не заменяя объект внутри t.

print(t)  # [[1, 2], [5, 6]]

Другой результат был бы при изменении самого списка: l.append(3) до переприсваивания отразился бы и в t[0]. Также можно непосредственно присвоить t[0] = 'TEST', заменив элемент составного списка. Важно различать изменение объекта и изменение ссылки, которую хранит конкретная переменная.

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

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

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

Подробнее