Вчера + сегодня полдня:
✅) Теория - 77 минут видео
✅) Практика - задачи по ней же 👇
✅) Завершена глава про:
1) Генераторы и некоторые полезные функции: Темы: Выражения генераторы; Функция-генератор. Оператор yield; Функции: map, filter, zip, any, all, isinstance, type; Особенности сортировки через sort() и sorted(), key=lambda;
Подробнее уже сами знаете где найти.
Основные моменты из этого материала:
1) Выражения-генераторы:
Это объект-генератор. Можно получить из него значения по одному через метод next(). При переборе всех элементов становится пустым. Если после истощения вызывать next - словим ошибку "StopIteration". Так же является итерируемым объектом, поэтому можно перебирать и через цикл for, например.
2) Функция-генератор:
В принципе тоже самое что предыдущий пункт. Только есть отличие от обычных. В этой функции вместо return прописывают yield. И после этого оператора yield обычная функция становится функией-генератором. Так же «замораживает» свое состояние, вместе с локальными переменными до следующего вызова функции next(). В этом и заключается роль оператора yield.
3) Сортировка sort(), sorted():
По умолчанию сортировка ведется по значениям элементов коллекции. Но мы можем упорядочить с помощью различных способов, передавая в аргумент "key" функцию, по результатам которой будут сортироваться наши данные. Простой пример допустим у нас есть список lst = ["Москва", "Тверь", "Смоленск", "Псков", "Рязань"]:
print( sorted(lst, key=len)
print( sorted(lst, key=lambda x: x[-1]), reverse=True)
возвращает список, упорядоченный по длине слов в нем, а во втором варианте - сортировка по последней букве слова в обратном порядке. Можно реализовывать и более сложные варианты, все в вашей фантазии)
4) Проверка типа объекта:
isinstance() vs type() возвращают True или False. У обоих одинаковый функционал, с небольшим различием. type() проверяет точное совпадение с типом данных, а isinstance() в отличие от type() делает проверку с учетом иерархии наследования объектов и была разработана для проверки принадлежности объекта тому или иному классу. Например, тип bool наследуется от int, поэтому isinstance() выдает True для типов int и bool; a type() выдаст True и False соответственно.
5) any, all, filter:
Используйте для фильтрации ваших данных, простой синтаксис - добавить нечего)
Заключение:
После этой главы вы будете: Понимать что такое генератор и функция-генератор. Уметь пользоваться функциями для сортировки значений. Умело применять возможности для фильтрации и проверки данных. Проверять правильно типы данных объектов. Ну и map😁