Дан код: ``python a = [[1, 2], [3, 4]] b = a.copy() a[0].append(99) ` Будет ли 99 в b[0]`?

AВ b тоже появится 99, потому что .copy() создаёт поверхностную копию
BВ b останется [1, 2], потому что .copy() полностью копирует вложенные списки
CБудет исключение TypeError при попытке добавить элемент во вложенный список
DВ a не изменится ничего, потому что append создаст новый вложенный список
Правильный ответ. Метод .copy() создаёт поверхностную копию: внешний список новый, но вложенные объекты — те же самые.

Разбор

При поверхностной копии (.copy() или list(a)) создаётся новый внешний список, но его элементы — те же объекты. Поэтому a[0] и b[0] ссылаются на один и тот же вложенный список. Добавление 99 через a[0].append(99) отразится и в b[0]. Для полной независимости используйте copy.deepcopy(a), который рекурсивно копирует все вложенные объекты.

Проверь себя · 1/3разбор после ответа
Есть пустой словарь groups = {}. Что произойдёт при выполнении groups.setdefault('RU', []).append(7)?
Тренировать Python в Telegram

Ещё вопросы по теме «Коллекции и структуры данных»