Будет выведено [[100], [2], [3]]. Поверхностная копия создала новый внешний список, но сохранила ссылки на прежние вложенные списки.
import copy
Будет выведено [[100], [2], [3]]. Поверхностная копия создала новый внешний список, но сохранила ссылки на прежние вложенные списки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
import copy a = [[1],[2],[3]] b = copy.copy(a) a.append([4]) a[0][0] = 100 print(b)
Ответ
Будет выведено [[100], [2], [3]]. Поверхностная копия создала новый внешний список, но сохранила ссылки на прежние вложенные списки.
a.append([4]) меняет только внешний список a, поэтому четвёртый элемент не появляется в b. Присваивание a[0][0] = 100 изменяет общий вложенный список, доступный и через b[0].
Это отличается от замены a[0] целиком: новая ссылка в a не заменила бы соответствующую ссылку в b. Для независимых вложенных структур часто используют deepcopy, учитывая его стоимость и особое поведение пользовательских объектов. В данном примере никакого глубокого копирования не происходит.