Различия между версиями 4 и 5
Версия 4 от 2021-11-01 16:15:02
Размер: 3953
Редактор: FrBrGeorge
Комментарий:
Версия 5 от 2021-11-11 10:36:52
Размер: 3953
Редактор: hbd
Комментарий: Правка даты
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
= 10.07 Итераторы = = 10.28 Итераторы =

10.28 Итераторы

Пример использования Zoom на семинарах ВМК

Итераторы

Просто итераторы

  • Циклический конструктор и его использование, зачем нужен
  • Функция-генератор и 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

      • и т. д., т. е. выдаёт содержимое «окна» длины не более n, сдвигает его на одну позицию, и снова выдаёт. Итерация заканчивается, когда окно оказывается пустым

    • Нам помогут itertools.islice(), itertools.tee() и yield from!

    • Пример:
         1 print(*list(slide(range(5), 3)))
      
    • Вывод:
      0 1 2 1 2 3 2 3 4 3 4 4
  • <!> Задача_3 — на itertools (на комбинаторику, с естественной формулировкой):

    • Священные Надписи

    • поклонники бога Тора используют в своих надписях три буквы: T, O, R. Надпись считается священной, если имя бога (подстрока "TOR") входит в неё ровно два раза
    • напишите программу-однострочник, которая при помощи itertools и filter формирует все священные надписи заданной длины, причём в алфавитном порядке
    • пример:
      • вход: 6

      • выход: TORTOR

      • вход: 7

      • выход: OTORTOR, RTORTOR, TOROTOR … и т.п.

Д/З

LecturesCMC/PythonIntro2021/Prac/07_Iterators (последним исправлял пользователь alryaz 2021-12-01 03:27:40)