Будет выведено [[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', заменив элемент составного списка. Важно различать изменение объекта и изменение ссылки, которую хранит конкретная переменная.