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

⚡ Кратко

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

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

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

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

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