Python

Генератор Python

Генератор Python
В этом разделе мы изучим Python Generator.

Определение: Генератор похож на обычную функцию, которая генерирует диапазон значений с помощью урожай ключевое слово. Он возвращает по одному объекту за раз. Он внутренне использует итератор. Чтобы получить доступ к следующему элементу следующий() функция используется, или мы можем ее использовать для цикл. Если мы попытаемся получить доступ к значению за пределами диапазона, он поднимет StopIteration ошибка.

Мы увидим пример, чтобы лучше понять

Бывший: функция генератора для диапазона значений

def range_fun (n):
х = 0
в то время как х < n:
доход x
х + = 1
y = range_fun (3)
# вызов с использованием цикла for
print ('Сгенерировать значения с помощью метода next ()')
для i в range_fun (3):
печать (я)
# генератор вызовов с использованием следующего метода
print ('Сгенерировать значения, используя метод цикла for')
печать (далее (у))
печать (далее (у))
печать (далее (у))
print (next (y)) # Будет сгенерировано исключение Stop Iteration

Бывший: Функция генератора для ряда Фибоначчи

def fib_fun (n):
х, у = 0, 1
в то время как х < n:
доход x
х, у = у, х + у
z = fib_fun (6) # объект-генератор
print ('Сгенерировать значения с помощью метода next ()')
печать (далее (г))
печать (далее (г))
печать (далее (г))
печать (далее (г))
печать (далее (г))
печать (далее (г))
print ('Сгенерировать значения, используя метод цикла for')
для i в fib_fun (6):
печать (я)

Бывший: Функция генератора для создания диапазона значений с заданными начальным и конечным значениями.

def my_range (начало, конец):
текущий = начало
в то время как текущий < end:
текущая доходность
текущий + = 1
print ('Сгенерировать значения с помощью метода next ()')
число = мой_ диапазон (1,5)
печать (далее (числа))
печать (далее (числа))
печать (далее (числа))
печать (далее (числа))
print ('Сгенерировать значения, используя метод цикла for')
для числа в my_range (1,5):
печать (число)

Бывший: Генератор для умножения каждого числа (меньше числа) на число

def gen_mulby_num (макс, число):
п = 0
в то время как n < max:
дать n * num
п + = 1
для i в gen_mulby_num (5,3):
печать (я)

Бывший: Генератор для поиска куба для диапазона значений

def gen_mulby_num (макс, число):
п = 0
в то время как n < max:
дать n * num
п + = 1
для i в gen_mulby_num (5,3):
печать (я)

Бывший: несколько генераторов: найти квадрат четных чисел, образованных из числа

Генератор 1: генерировать четные значения из заданного числа

Генератор 2: генерировать квадратные числа из значений генератора1

def gen_even (м):
п = 0
в то время как n < m:
если n% 2 == 0:
дать n
п + = 2
def gen_square (числа):
для числа в числах:
yield 2 * num
для n в gen_square (gen_even (15)):
печать (п)


Бывший: Несколько генераторов: создать ряд Фибначчи и добавить значение 10 к каждому числу.

Generator1: генерирует ряд Фибоначчи из заданного числа

Генератор2: сложите каждое число на 10 из генератора1

def gen_fib (n):
х, у = 0, 1
в то время как х < n:
доход x
х, у = у, х + у
def gen_add_10 (числа):
для числа в числах:
доход 10 + число
для n в gen_add_10 (gen_fib (5)):
печать (п)


Понятия генератора:

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

Бывший:

nums = (i для i в диапазоне (10))
печать (тип (числа))
печать (список (числа))

Разница между генератором и нормальной функцией:

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

Заключение:

Генератор очень полезен, когда мы обрабатываем огромные / большие данные. В данный момент он содержит только один фрагмент данных, а не целые данные. Концепция генераторов считается продвинутой концепцией в Python.

Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...
5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...