📝 Практические задания
⚡ Кратко
Идите от простых задач к сложным.
После каждого решения проверьте исходные данные и ожидаемый вывод.
Если задача меняет исходный список, явно убедитесь, что изменился именно он.
Топ-3 ошибки: путать ссылку и копию; ожидать порядок там, где его нет; усложнять выражение, когда обычный цикл читается лучше.
Задание 1. Ссылки на изменяемый объект
Что произойдёт, если две переменные ссылаются на один список и список изменили через одну из них?
Изменится общий объект, поэтому результат будет виден через обе переменные.
Задание 2. Порядок append()
Определите вывод для a = [10, 20, 30]; b = a; b.append(40); a.append(30).
Список a станет [10, 20, 30, 40, 30].
Задание 3. id()
Объясните, почему id([1, 2, 3]) и id([1, 2, 3]) обычно разные.
Это два разных объекта с одинаковым содержимым.
Задание 4. Вложенная замена
Замените 30 на 'new' в nested_list = [10, [20, 30], [40, [50, 60]]].
Используйте nested_list[1][1] = 'new'.
Задание 5. Удаление имени
Почему после del a переменная b всё ещё может печатать список, если b = a было сделано раньше?
Удалено только имя a, а объект остаётся, пока на него ссылается b.
Задание 6. Фильтрация элементов в группах
Создайте глубокую копию nested_list и в копии удалите элементы меньше среднего значения своей группы.
Оригинал должен остаться неизменным.
Проверка понимания
Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.
Вопрос 1
Что хранит dict?
Вопрос 2
Что гарантирует set?
Вопрос 3
Какой стиль имён переменных обычно рекомендует PEP 8?
Вопрос 4
Зачем использовать f-strings в современном Python?
Вопрос 5
Когда полезен ранний возврат из функции?
Вопрос 6
Что делает аннотация типа в Python?
Вопрос 7
Как лучше обрабатывать ожидаемую ошибку преобразования?