Piton

Python Generator

Python Generator
U ovoj ćemo temi naučiti Python Generator.

Definicija: Generator je poput normalne funkcije koja generira niz vrijednosti pomoću prinos ključna riječ. Vraća jedan po jedan objekt. Interno koristi iterator. Za pristup sljedećem elementu Sljedeći() koristi se funkcija ili je mi možemo koristiti za petlja. Ako pokušamo pristupiti vrijednosti izvan raspona, ona povisuje a StopIteracija pogreška.

Vidjet ćemo neki primjer za bolje razumijevanje

Primjer: funkcija generatora za raspon vrijednosti

def range_fun (n):
x = 0
dok je x < n:
prinos x
x + = 1
y = opseg_zabave (3)
#call pomoću for petlje
print ('Generiraj vrijednosti pomoću metode next ()')
za i u rasponu_zabava (3):
ispis (i)
#call generator pomoću sljedeće metode
print ('Generiraj vrijednosti pomoću metode for loop')
ispis (sljedeći (y))
ispis (sljedeći (y))
ispis (sljedeći (y))
ispis (sljedeći (y)) # Postat će se iznimka Stop Iteration

Pr: Funkcija generatora za Fibonaccijevu seriju

def fib_fun (n):
x, y = 0, 1
dok je x < n:
prinos x
x, y = y, x + y
z = fib_fun (6) # objekt generatora
print ('Generiraj vrijednosti pomoću metode next ()')
ispis (sljedeći (z))
ispis (sljedeći (z))
ispis (sljedeći (z))
ispis (sljedeći (z))
ispis (sljedeći (z))
ispis (sljedeći (z))
print ('Generiraj vrijednosti pomoću metode for loop')
za i u fib_fun (6):
ispis (i)

Pr: Funkcija generatora za stvaranje raspona vrijednosti zadanih početnih i krajnjih vrijednosti.

def my_range (početak, kraj):
struja = start
dok je trenutna < end:
struja popuštanja
struja + = 1
print ('Generiraj vrijednosti pomoću metode next ()')
nums = moj_opseg (1,5)
ispis (sljedeći (brojevi))
ispis (sljedeći (brojevi))
ispis (sljedeći (brojevi))
ispis (sljedeći (brojevi))
print ('Generiraj vrijednosti pomoću metode for loop')
za num u my_range (1,5):
ispis (broj)

Pr: Generator za množenje svakog broja (manjeg od broja) s brojem

def gen_mulby_num (maks., broj):
n = 0
dok je n < max:
prinos n * broj
n + = 1
za i u gen_mulby_num (5,3):
ispis (i)

Pr: Generator za pronalaženje kocke za raspon vrijednosti

def gen_mulby_num (maks., broj):
n = 0
dok je n < max:
prinos n * broj
n + = 1
za i u gen_mulby_num (5,3):
ispis (i)

Pr: više generatora: pronaći kvadrat parnih brojeva generiranih od broja

Generator 1: generiranje parnih vrijednosti iz određenog broja

Generator 2: generiranje kvadratnih brojeva iz vrijednosti generator1

def gen_even (m):
n = 0
dok je n < m:
ako je n% 2 == 0:
prinos n
n + = 2
def gen_square (brojevi):
za num u nums:
prinos 2 * broj
za n u gen_square (gen_even (15)):
ispis (n)


Pr: Više generatora: stvorite fibnaccijeve serije i dodajte vrijednost 10 svakom broju.

Generator1: generira fibonaccijevu seriju od određenog broja

Generator2: dodajte svaki broj sa 10 iz generator1

def gen_fib (n):
x, y = 0, 1
dok je x < n:
prinos x
x, y = y, x + y
def gen_add_10 (brojevi):
za num u nums:
prinos 10 + broj
za n u gen_add_10 (gen_fib (5)):
ispis (n)


Razumijevanja generatora:

Razumijevanja generatora slična su shvaćanjima popisa gdje popis koristi uglate zagrade; ovo koristi normalne zagrade.

Pr:

nums = (i za i u rasponu (10))
ispis (vrsta (brojevi))
ispis (popis (brojevi))

Razlika između generatora i normalne funkcije:

  1. Generator daje vrijednosti pomoću prinos ključna riječ gdje normalna funkcija koristi povratak ključna riječ
  2. Generator započinje od mjesta gdje se zaustavio kad se sljedeći put pozove. Normalna funkcija svaki put izvršava sve izraze.
  3. Generator sprema memoriju jer vraća jednu po jednu vrijednost. Tako ga možemo koristiti za generiranje beskonačnih vrijednosti.

Zaključak:

Generator je vrlo koristan kada radimo s velikim / velikim podacima. U određenom trenutku sadrži samo jedan jedini podatak, a ne cijele podatke. Koncept generatora smatra se naprednim konceptom u pythonu.

Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...
Najbolje aplikacije za mapiranje gamepada za Linux
Ako volite igrati igre na Linuxu s gamepadom umjesto tipičnim sustavom za unos tipkovnice i miša, za vas postoji nekoliko korisnih aplikacija. Mnoge r...
Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...