Код Middle Типы, изменяемость и сравнение обновлено
Своя глубокая копия вложенных структур
Условие
Напишите deep_copy(obj), который копирует вложенные list и dict (в значениях могут быть числа, строки, None, bool, списки и словари) без copy.deepcopy. Результат должен быть равен исходному, но не делить с ним ни одного списка или словаря.
В проверке функция вызывается, затем у оригинала меняются вложенные объекты; возвращается пара [копия, копия_после_изменения_оригинала_равна_старой]. Вам нужно реализовать только deep_copy, обёртку check менять не нужно.
Примеры
check([1, [2, 3]]) // [[1, [2, 3]], true]
check({"a":{"b":[1,2]}}) // [{"a":{"b":[1,2]}}, true]
check([]) // [[], true]
Как подойти
Подсказки: 2
- Неизменяемые значения можно возвращать как есть.
- Для списка и словаря вызовите
deep_copyрекурсивно для каждого значения.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.