Рубрики
Без рубрики

Генераторы в Python | Как использовать генераторы Python

Узнайте, что являются генераторами в Python вместе с преимуществами. Также узнайте, как создавать и использовать их вместе с различными случаями использования.

Автор оригинала: Wajiha.

Генерирование и объектов, которые позволяют переходить на них, считается ошибкой задачей. Но в Python реализация этой болезненной задачи просто становится действительно гладкой. Итак, давайте пойдем вперед и посмотрим посмотрите на генераторы в Python.

Что такое генераторы в Python?

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

Преимущества использования генераторов

Без генераторов в Python, производящие метки чрезвычайно трудны и длительны.

Генераторы легко реализовать, как они автоматически реализуют ИТЕР (), Следующий () и затруднительность, которая в противном случае должна быть явно указана.

Память сохраняется, поскольку элементы производятся как при необходимости, в отличие от обычных функций Python. Этот факт становится очень важным, когда вам нужно создать огромное количество итераторов. Это также считается самым большим преимуществом генераторов.

Может использоваться для получения бесконечного количества предметов.

Они также могут быть использованы для трубопровода ряд операций

Обычные функции VS Генераторные функции:

Генераторы в Python созданы так же, как как вы создаете нормальные функции, используя ключевое слово «Def». Но функции генератора используют ключевое слово доходности вместо возврата. Это делается для уведомления переводчика, что это итератор. Не только это, функции генератора выполняются при вызове следующей () функции, а не по их имени, как в случае нормальных функций. Рассмотрим следующий пример, чтобы понять его лучше:

ПРИМЕР:

def func(a):
    yield a
a=[1,2,3]

b=func(a)
next(b)

Выход: [1, 2, 3]

Как вы можете видеть, в вышеуказанном выходе Func () использует ключевое слово выхода и следующую функцию для его выполнения. Но для нормальной функции вам понадобится следующий кусок кода:

ПРИМЕР:

def func(a):
    return a
a=[1,2,3]
func(a)

Выход: [1, 2, 3]

Если вы посмотрите на вышеприведенный пример, вам могут быть задаться вопросом, зачем использовать функцию генератора, когда нормальная функция также возвращает тот же выход. Итак, давайте продолжим и посмотрим, как использовать генераторы в Python.

Использование функций генератора:

Как упоминалось ранее, генераторы в Python производят показывать по одному за раз. Посмотрите на следующий пример:

ПРИМЕР:

def myfunc(a):
    while a>=3:
        yield a
        a=a+1
b = myfunc(a)
print(b)
next(b)

Когда вы выполняете следующую функцию, вы увидите следующий вывод:

Выход: 4.

Здесь один переменный объект был возвращен удовлетворительным условием. После выполнения контроль передается вызывающему абоненту. В случае необходимости больше элементов, одна и та же функция должна быть выполнена снова, вызывая следующую функцию.

next(b)

Выход: 5.

В дальнейших выполнениях функция вернет 6,7 и т. Д. Генераторные функции в Python Allurage Alludhe ИТЕР () и Следующий () Методы автоматически. Следовательно, вы можете повторить объекты, просто используя следующий () метод. Когда генерация элемента должна завершаться, функции генератора реализуют Заставка внутренне без необходимости беспокоиться абонента. Вот еще один пример этого:

ПРИМЕР:

a=2
def myfunc(a):
    while a >= 0:
        yield a
        a -= 1
b = myfunc(a)
print(b)
next(b)

ВЫХОД:

Записи-генераторы-в-Python-Edureka-1.png

Вышеуказанное изображение показывает выполнение нашей программы требуемого количества раз. Если вы попытаетесь снова вызвать следующую функцию, он возвращает сообщение, изображающее Заставка был реализован. Если вы попытаетесь сделать это с нормальными функциями, возвращаемые значения не изменится или итерации. Посмотрите на пример ниже:

ПРИМЕР:

def z():
    n=1
    yield n
    n=n+3
    yield n
p=z()
next(p)

ВЫХОД:

Задержание2-генераторы-в Python-Edureka.png

Генераторы с петлями:

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

ПРИМЕР:

def z():
    n=1
    yield n
    n=n+3
    yield n
for x in z():
    print(x)

ВЫХОД:

1 4

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

Выражения генератора:

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

Посмотрите на пример ниже:

ПРИМЕР:

a=range(6)
print("List Comprehension", end=':')
b=[x+2 for x in a] 
print(b)
print("Generator expression", end=':n')
c=(x+2 for x in a) 
print(c)
for y in c:
    print(y)

ВЫХОД:

Понимание списка: [2, 3, 4, 5, 6, 7]

Выражение генератора:

<объект генератора на 0x0000016362944480>

2 3 4 5 6

Как вы можете видеть, в вышеупомянутом выходе первое выражение является пониманием списка, которое указано в скобках []. Понимание списка производит полный список предметов одновременно. Далее – это выражение генератора, которое возвращает те же элементы, но и по одному. Указано с использованием () кронштейнов.

Функции генератора также могут использоваться в других функциях. Например:

ПРИМЕР:

a=range(6)
print("Generator expression", end=':n')
c=(x+2 for x in a) 
print(c)
print(min(c))

ВЫХОД:

Генератор выражение 2.

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

Сценарии использования:

Давайте использовать генераторы в Python, чтобы:

  • Генерировать фибоначчи серии
  • Генерация номеров

Генерация серии Fibonacci:

Серия FIBONACCI, поскольку мы все знаем, это серия номеров, в которой каждый номер является суммой предшествующих двух чисел. Первые два номера 0 и 1. Вот программа генератора для генерации серии Fibonacci:

ПРИМЕР:

def fibo():
    first,second=0,1
    while True:
        yield first
        first,second=second,first+second
for x in fibo():
    if x>50:
        break
    print(x, end=" ")

ВЫХОД:

0 1 1 2 3 5 8 13 21 34

Вышеуказанный выход показывает серию FIBONACCI со значениями менее 50. Давайте теперь посмотрим, как создать список номеров.

Генерация чисел:

Если вы хотите генерировать указанные номера списков, вы можете сделать это использование функций генератора. Посмотрите на следующий пример:

ПРИМЕР:

a=range(10)
b=(x for x in a) 
print(b)
for y in b:
    print(y)

ВЫХОД:

<Генератор объект на 0x000001cbe1602de0>

0 1 2 3 4 5 6 7 8

9

ПРИМЕР:

a=range(2,10,2)
b=(x for x in a) 
print(b)
for y in b:
    print(y)

ВЫХОД:

<объект генератора на 0x000001cbe1623138> 2 4 6

8

Вышеуказанная программа вернула даже номера от 2 до 10. Это приводит нас к концу этой статьи о генераторах в Python. Я надеюсь, что вы поняли все темы.

Получил вопрос для нас? Пожалуйста, укажите его в разделе «Генераторы в блоге Python», и мы вернемся к вам как можно скорее.