07 Июл 2023
2 мин
1691

Использование «yield from» в Python 3.3: основные применения и примеры

«Yield from» — это синтаксис, введенный в Python 3.3, который позволяет делегировать часть операций генератору. Он полезен при работе с вложенными итерируемыми

Содержание

«Yield from» — это синтаксис, введенный в Python 3.3, который позволяет делегировать часть операций генератору. Он полезен при работе с вложенными итерируемыми объектами, такими как списки в списке.

Прежде чем погрузиться в детали синтаксиса «yield from», важно понять, что такое генераторы и корутины в Python.

Генераторы являются особым типом итераторов, которые создаются с помощью ключевого слова «yield». Генераторы полезны для обработки больших объемов данных, которые не могут быть хранены в памяти одновременно.

В то время как генераторы производят значения для итерации, корутины могут потреблять значения, отправленные в них. Это позволяет использовать их для более сложного управления потоком данных.

Теперь давайте рассмотрим пример использования «yield from».

def flatten(nested_list):
    for sublist in nested_list:
        for item in sublist:
            yield item

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(list(flatten(nested_list)))

Приведенный выше код преобразует вложенный список в плоский список. Однако, это можно сделать проще с помощью «yield from».

def flatten(nested_list):
    for sublist in nested_list:
        yield from sublist

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(list(flatten(nested_list)))

Синтаксис «yield from» делает код более чистым и проще для восприятия. Он также упрощает обработку вложенных генераторов.

Сравнение «yield from» с микропотоками происходит из-за того, что оба позволяют управлять потоком данных в коде. «Yield from» позволяет делегировать выполнение другому генератору, тем самым создавая цепочку генераторов, которые могут быть остановлены и возобновлены в любой момент. Это похоже на то, как микропотоки позволяют переключаться между различными задачами.

В заключение, «yield from» является мощным инструментом для управления потоком данных и упрощения кода.

Содержание

Добавить комментарий

Определи профессию по рисунку
Пройдите тест, узнайте какой профессии подходитеНачать тест
+