Влияние изменения вложенного списка через ссылку

sub станет [1, 2, [4]], а lst — [0, [1, 2, [4]], [3]]. Переменная sub ссылается на тот же вложенный список, что lst[1].

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

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

sub станет [1, 2, [4]], а lst — [0, [1, 2, [4]], [3]]. Переменная sub ссылается на тот же вложенный список, что lst[1].

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

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

Условие

Определите, как изменение вложенного списка, полученного по ссылке, отразится на оригинальном списке, и какие результаты будут выведены.

lst = [0, [1, 2], [3]]
sub = lst[1]
sub.append([4])
print(sub)
print(lst)

Ответ

sub станет [1, 2, [4]], а lst — [0, [1, 2, [4]], [3]]. Переменная sub ссылается на тот же вложенный список, что lst[1].

print(sub)  # [1, 2, [4]]
print(lst)  # [0, [1, 2, [4]], [3]]

Операция sub = lst[1] не копирует список. Метод append([4]) добавляет один объект — список [4], поэтому появляется дополнительная вложенность. При sub.extend([4]) добавилось бы число 4 без вложенного списка.

Чтобы изменить отдельный контейнер, можно написать sub = lst[1].copy(). Однако такая копия поверхностная: если внутри уже находятся изменяемые объекты, они останутся общими. Для независимого копирования всей вложенной структуры нужен соответствующий глубокий способ.

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

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

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

Подробнее