Дан код:
``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)?Ещё вопросы по теме «Коллекции и структуры данных»
- Есть список событий `events = ["click"]`. Список `events` используется в нескольких местах по ссылке, поэтому важно изменить именно тот же объект (не создавать новый). Нужно добавить элементы из `new_events = ["view", "purchase"]`, чтобы итог был плоским. Какой вариант корректен?
- Есть словарь `d = {"country": "RU"}`. Нужно получить значение по ключу `"city"`, но если ключа нет — вернуть строку `"unknown"` без исключения. Что правильно?
- В логах есть список `user_ids` с повторениями. Как получить количество уникальных пользователей?
- Что произойдёт при выполнении кода `t = (1, 2); t[0] = 9`?
- Дан список `nums = [10, 20, 30, 40]`. Чему равен результат выражения `nums[1:3]`?
- Все вопросы по «Коллекции и структуры данных» →