Различия между версиями 1 и 2
Версия 1 от 2021-10-28 12:49:58
Размер: 42
Редактор: FrBrGeorge
Комментарий:
Версия 2 от 2021-10-28 13:49:04
Размер: 3424
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
= 07.10 Итераторы =
'''TODO'''
= 10.07 Итераторы =
[[LecturesCMC/PythonIntro2020/Prac/ZoomSeminars|Пример использования Zoom на семинарах ВМК]]
 * Проверяем настройки
 * Проверяем layout с демонстрацией преподавателя + работой
 * Проверяем самостоятельную работу с демонстрацией экранов
  * Копипастим [[../RepoStruct#Class|пример оформления тестов к заданию типа «написать функцию»]], заставляем его работать
 * Выбираем чат

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

10.07 Итераторы

Пример использования 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 и т. д.

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

  • <!> Задача_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)