Функция itertools.cycle
В пайтон есть классный модуль
Сегодня мы бы хотели показать вам функцию
К примеру, функция
Мы также можем воспользоваться
#генераторы #itertools
В пайтон есть классный модуль
itertools
для создания собственных итераторов. Функции данного модуля довольно эффективны в работе, поэтому их часто используют в реальных проектах. Сегодня мы бы хотели показать вам функцию
cycle()
из itertools
. Данная функция принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элементы.К примеру, функция
cycle()
из последовательности ['red', 'white', 'blue']
генерирует повторяющуюся бесконечную. Но важно при проходе при итерации по такому итератору предусмотреть выход из цикла (а не как у нас в первом случае с colors:). Так как это итератор, то мы можем использовать его для получения значений через функцию next(colors)
.Мы также можем воспользоваться
islice()
, который вернет итератор по подмножеству переданного объекта.#генераторы #itertools
👍4
Делегирующие генераторы
Давайте создадим простенькую генераторную функцию
А также ещё одну генераторную функцию
Цикл, который можно написать в
Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации
#генераторы
Давайте создадим простенькую генераторную функцию
subgen
, которая будет возвращать числа от 0 до переданного аргумента.А также ещё одну генераторную функцию
delegator
, которая будет возвращать числа из итерируемого объекта source
, который передадим в качестве аргумента.Цикл, который можно написать в
delegator
, можно заменить всего лишь одной строчкой. То есть yield from
заменяет цикл for
, в котором только возвращаются значения через yield
.Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации
delegator
можно назвать делигирующим генератором, а subgen
подгенератором.#генераторы
🔥4❤3