📝 Практические задания
⚡ Кратко
Идите от простых задач к сложным.
После каждого решения проверьте исходные данные и ожидаемый вывод.
Если задача меняет исходный список, явно убедитесь, что изменился именно он.
Топ-3 ошибки: путать ссылку и копию; ожидать порядок там, где его нет; усложнять выражение, когда обычный цикл читается лучше.
Задание 1. GC и ссылки
Когда объект будет удалён сборщиком мусора?
Когда на объект больше не ссылается ни одно доступное имя или контейнер.
Задание 2. del во вложенном списке
Что выведет del numbers[1][0] для [[1, 2], [3, 4], [5, 6]]?
[[1, 2], [4], [5, 6]]
Задание 3. Обход вложенного списка
Что напечатает двойной for по [[1, 2], [3, 4], [5, 6]]?
1 2 3 4 5 6
Задание 4. Копирование ссылки
Почему copied_list[0] = 0 меняет original_list?
Обе переменные указывают на один список.
Задание 5. deepcopy
Почему deep_copy[0][0] = 0 не меняет original_list?
deepcopy создала независимые вложенные списки.
Задание 6. Кубы
Что выведет [x ** 3 for x in range(4)]?
[0, 1, 8, 27]
Задание 7. Стек
Что останется после append(5), append(10), pop(), append(20)?
[5, 20]
Задание 8. Практика
Удалите хвост списка после первого нуля, объедините имена и возраст, получите произведения пар.
См. solutions.html.
Проверка понимания
Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.
Вопрос 1
Как лучше использовать summary-урок?
Вопрос 2
Что показывает хороший результат после повторения блока?
Вопрос 3
Какой вопрос стоит задать себе после каждого ответа?
Вопрос 4
Какой стиль имён переменных обычно рекомендует PEP 8?
Вопрос 5
Зачем использовать f-strings в современном Python?
Вопрос 6
Когда полезен ранний возврат из функции?
Вопрос 7
Что делает аннотация типа в Python?
Вопрос 8
Как лучше обрабатывать ожидаемую ошибку преобразования?