10.07 Итераторы
Пример использования Zoom на семинарах ВМК
- Проверяем настройки
- Проверяем layout с демонстрацией преподавателя + работой
- Проверяем самостоятельную работу с демонстрацией экранов
Копипастим пример оформления тестов к заданию типа «написать функцию», заставляем его работать
- Выбираем чат
Итераторы
Просто итераторы
- Циклический конструктор и его использование, зачем нужен
Функция-генератор и yield
Задача_1, просто на итератор.
- числа Фибоначчи - последовательность, начинающаяся с 1, 1, и продолжающаяся так, что очередной элемент равен сумме двух предшествующих элементов.
написать итератор fib(m, n), возвращающий числа Фибоначчи, начинаю с m-го и заканчивая n-м (m>=n), в нумерации с 0
- пример:
вход: 2, 4
выход: 2, 3, 5
Немного об itertools:
- Удобство и простота
Особенности tee() и islice() и других воспроизводящих итераторов — чудес на свете не бывает
- Комбинаторика
Зачем нужен yield from
- Пример
Задача_2, на yield from: Скользящее окно
написать итератор slide(seq, n), который получает на вход последовательность A0, A1 … , An, …, а на выходе выдаёт A0, A1 … , An-1, A1, A2 … An, A2, A3 … An+1 и т. д.
Нам помогут itertools.islice() и yield from!
Задача_3 — на itertools (на комбинаторику, с естественной формулировкой):
Священные Надписи
- поклонники бога Тора используют в своих надписях три буквы: T, O, R. Надпись считается священной, если имя бога (подстрока "TOR") входит в неё ровно два раза
- напишите программу-однострочник, которая при помощи itertools и filter формирует все священные надписи заданной длины, причём в алфавитном порядке
- пример:
вход: 6
выход: TORTOR
вход: 7
выход: OTORTOR, RTORTOR, TOROTOR … и т.п.
Д/З
Ещё раз посмотреть как оформляются тесты к заданию типа «написать функцию»
- Оформить решения и не менее трёх тестов для каждой задачи