📝 Практические задания

⚡ Кратко

Идите от простых задач к сложным.

После каждого решения проверьте исходные данные и ожидаемый вывод.

Если задача меняет исходный список, явно убедитесь, что изменился именно он.

Топ-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

Как лучше обрабатывать ожидаемую ошибку преобразования?