Различия между версиями 1 и 6 (по 5 версиям)
Версия 1 от 2020-10-21 00:30:49
Размер: 754
Редактор: FrBrGeorge
Комментарий:
Версия 6 от 2020-10-22 17:11:08
Размер: 2999
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
 1. Задача 1 — Просто итератор, который что-нибудь такое внутри себя высчитывает, да хоть Пи по Лейбницу. Это меееедленно, но прооосто). Правда, Д/З по лекции — тоже Пи.
 1. Задача 2 — на `yield from`, когда из одного генератора вызываются итерации другого
 1. Задача 3 — на параметрический генератор, только надо придумать __хоть какой-нибудь__ пример из реальной жизни, зачем это может быть нужно. Погуглить.
 1. Задача_1, просто на итератор.
  * числа Фибоначчи - последовательность, начинающаяся с 1, 1, и продолжающаяся так, что очередной элемент равен сумме двух предшествующих элементов.
  * написать итератор fib(m,n), возвращающий числа Фибоначчи, начинаю с m-го и заканчивая n-м (m>=n), в нумерации с 1
  * пример:
   * вход: 3, 5
   * выход: 2, 3, 5
 1. Задача_2, на `yield from`: Скользящее окно
  * написать итератор even(), получающий на вход числовую последовательность длины не менее 3 и возвращающий её элементы, являющиеся чётными числами
  * написать итератор slide(), получающий на вход числовую последовательность длины не менее 3, и возвращающий:
   * чётные элементы в подпоследовательности с 1-го по 3-й элемент ("окне" размером в 3 элемента)
   * чётные элементы в подпоследовательности с 2-го по 4-й элемент ("окно" сдвинулось на 1 элемент вправо)
   * далее по аналогии, пока правая граница "окна" не достигнет конца последовательности (понятно, что если в последовательности только 3 элемента, то окно сдвигать некуда)
  * итератор slide() должен использовать итератор even(), обращаясь к нему при помощи `yield from`
  * пример:
   * вход: 3, 4, 6, 8, 11
   * выход: 4, 6, 4, 6, 8, 6, 8
    * [3 4 6] 8 11 - 4
    * [3 4 6] 8 11 - 6
    * 3 [4 6 8] 11 - 8
    * 3 4 [6 8 11] - 6
    * 3 4 [6 8 11] - 8
 1. Задача_3 — на [[py3doc:itertools]] (на комбинаторику, с естественной формулировкой): Священные Надписи
  * поклонники бога Тора используют в своих надписях три буквы: T, O, R. Надпись считается священной, если имя бога (подстрока "TOR") входит в неё ровно два раза
  * напишите программу-однострочник, которая при помощи itertools и filter формирует все священные надписи заданной длины, причём в алфавитном порядке
  * пример:
   * вход: 7
   * выход: OTORTOR, RTORTOR, TOROTOR и т.п.
  

10.22 Итераторы

  1. Задача_1, просто на итератор.
    • числа Фибоначчи - последовательность, начинающаяся с 1, 1, и продолжающаяся так, что очередной элемент равен сумме двух предшествующих элементов.
    • написать итератор fib(m,n), возвращающий числа Фибоначчи, начинаю с m-го и заканчивая n-м (m>=n), в нумерации с 1

    • пример:
      • вход: 3, 5
      • выход: 2, 3, 5
  2. Задача_2, на yield from: Скользящее окно

    • написать итератор even(), получающий на вход числовую последовательность длины не менее 3 и возвращающий её элементы, являющиеся чётными числами
    • написать итератор slide(), получающий на вход числовую последовательность длины не менее 3, и возвращающий:
      • чётные элементы в подпоследовательности с 1-го по 3-й элемент ("окне" размером в 3 элемента)
      • чётные элементы в подпоследовательности с 2-го по 4-й элемент ("окно" сдвинулось на 1 элемент вправо)
      • далее по аналогии, пока правая граница "окна" не достигнет конца последовательности (понятно, что если в последовательности только 3 элемента, то окно сдвигать некуда)
    • итератор slide() должен использовать итератор even(), обращаясь к нему при помощи yield from

    • пример:
      • вход: 3, 4, 6, 8, 11
      • выход: 4, 6, 4, 6, 8, 6, 8
        • [3 4 6] 8 11 - 4
        • [3 4 6] 8 11 - 6
        • 3 [4 6 8] 11 - 8
        • 3 4 [6 8 11] - 6
        • 3 4 [6 8 11] - 8
  3. Задача_3 — на itertools (на комбинаторику, с естественной формулировкой): Священные Надписи

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

LecturesCMC/PythonIntro2020/Prac/07_Iterators (последним исправлял пользователь FrBrGeorge 2020-10-22 17:39:54)