Python

Генератор на Python

Генератор на Python
В тази тема ще научим Python Generator.

Определение: Генераторът е като нормална функция, която генерира диапазон от стойности с помощта на добив ключова дума. Той връща един обект наведнъж. Той използва вътрешно итератор. За достъп до следващия елемент следващия() функция, или ние можем да я използваме за цикъл. Ако се опитаме да получим достъп до стойността извън диапазона, тя извежда a StopIteration грешка.

Ще видим пример за по-добро разбиране

Пример: функция генератор за диапазон от стойности

def range_fun (n):
x = 0
докато х < n:
добив x
x + = 1
y = range_fun (3)
#call с помощта на цикъл
print ('Генериране на стойности чрез метода next ()')
за i в range_fun (3):
печат (i)
#call генератор, използвайки следващия метод
print ('Генериране на стойности с помощта на метод на цикъл')
печат (следващ (y))
печат (следващ (y))
печат (следващ (y))
print (next (y)) # Ще бъде повдигнато изключение Stop Iteration

Напр: Функция генератор за серия Фибоначи

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

Напр: Функция генератор за създаване на диапазон от стойности, зададени начална и крайна стойност.

def my_range (начало, край):
текущ = старт
докато ток < end:
ток на добив
ток + = 1
print ('Генериране на стойности с помощта на метод next ()')
nums = my_range (1,5)
печат (следващ (номера))
печат (следващ (номера))
печат (следващ (номера))
печат (следващ (номера))
print ('Генериране на стойности с помощта на метод на цикъл')
за число в my_range (1,5):
печат (брой)

Напр: Генератор за умножаване на всяко число (по-малко от число) по число

def gen_mulby_num (макс., брой):
n = 0
докато n < max:
добив n * брой
n + = 1
за i в gen_mulby_num (5,3):
печат (i)

Напр: Генератор за намиране на куб за диапазон от стойности

def gen_mulby_num (макс., брой):
n = 0
докато n < max:
добив n * брой
n + = 1
за i в gen_mulby_num (5,3):
печат (i)

Напр: множество генератори: намерете квадрата на четните числа, генерирани от число

Генератор 1: генериране на четни стойности от дадено число

Генератор 2: генериране на квадратни числа от стойности generator1

def gen_even (m):
n = 0
докато n < m:
ако n% 2 == 0:
добив n
n + = 2
def gen_square (номера):
за брой в числа:
добив 2 * брой
за n в gen_square (gen_even (15)):
печат (n)


Напр: Множество генератори: създайте серия от фибаначи и добавете стойност 10 на всяко число.

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

Generator2: добавете всяко число с 10 от generator1

def gen_fib (n):
x, y = 0, 1
докато х < n:
добив x
x, y = y, x + y
def gen_add_10 (номера):
за брой в числа:
добив 10 + брой
за n в gen_add_10 (gen_fib (5)):
печат (n)


Разбирания на генератора:

Разбиранията на генератора са подобни на разбирането на списъка, където списъкът използва квадратни скоби; това използва нормална скоба.

Напр:

nums = (i за i в обхват (10))
печат (тип (номера))
печат (списък (номера))

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

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

Заключение:

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

Битка за Уеснот 1.13.6 Разработка освободена
Битка за Уеснот 1.13.6, издаден миналия месец, е шестата версия за разработка в 1.13.x серия и предоставя редица подобрения, най-вече на потребителски...
Как да инсталирате League Of Legends на Ubuntu 14.04
Ако сте фен на League of Legends, това е възможност за вас да тествате League of Legends. Имайте предвид, че LOL се поддържа на PlayOnLinux, ако сте п...
Инсталирайте най-новата стратегия за игра OpenRA на Ubuntu Linux
OpenRA е Libre / Free Real Time стратегия за игра, която пресъздава ранните игри на Westwood като класическата Command & Conquer: Red Alert. Разпредел...