Piton

Generator Python

Generator Python
În acest subiect, vom învăța Python Generator.

Definiție: Un generator este ca o funcție normală care generează o gamă de valori folosind Randament cuvânt cheie. Returnează câte un obiect la un moment dat. Utilizează intern un iterator. Pentru a accesa elementul următor Următorul() este utilizată funcția sau o putem folosi pentru O buclă. Dacă încercăm să accesăm valoarea în afara intervalului, crește un StopIteration eroare.

Vom vedea câteva exemple pentru a înțelege mai bine

Ex: funcția generator pentru gama de valori

def range_fun (n):
x = 0
în timp ce x < n:
randament x
x + = 1
y = range_fun (3)
#call folosind pentru buclă
print („Generați valori folosind metoda next ()”)
pentru i în range_fun (3):
print (i)
#call generator folosind următoarea metodă
print („Generați valori folosind metoda pentru buclă”)
print (next (y))
print (next (y))
print (next (y))
print (next (y)) # Se va ridica excepția Stop Iteration

Ex: Funcția generator pentru seria Fibonacci

def fib_fun (n):
x, y = 0, 1
în timp ce x < n:
randament x
x, y = y, x + y
z = fib_fun (6) #generator object
print („Generați valori folosind metoda next ()”)
print (next (z))
print (next (z))
print (next (z))
print (next (z))
print (next (z))
print (next (z))
print („Generați valori folosind metoda pentru buclă”)
pentru i în fib_fun (6):
print (i)

Ex: Funcția generator pentru crearea unei game de valori date cu valori de început și sfârșit.

def my_range (start, end):
curent = start
în timp ce curent < end:
curent de randament
curent + = 1
print („Generați valori folosind metoda next ()”)
nums = intervalul_meu (1,5)
print (next (nums))
print (next (nums))
print (next (nums))
print (next (nums))
print („Generați valori folosind metoda pentru buclă”)
pentru num în gama_mei (1,5):
print (num)

Ex: Generator pentru a multiplica fiecare număr (mai puțin decât un număr) cu un număr

def gen_mulby_num (max, num):
n = 0
în timp ce n < max:
randament n * num
n + = 1
pentru i în gen_mulby_num (5,3):
print (i)

Ex: Generator pentru a găsi cub pentru gama de valori

def gen_mulby_num (max, num):
n = 0
în timp ce n < max:
randament n * num
n + = 1
pentru i în gen_mulby_num (5,3):
print (i)

Ex: generatoare multiple: găsiți pătratul numerelor pare generate dintr-un număr

Generatorul 1: generați valori pare dintr-un număr dat

Generator 2: generați numere pătrate din valorile generator1

def gen_even (m):
n = 0
în timp ce n < m:
dacă n% 2 == 0:
randament n
n + = 2
def gen_square (nums):
pentru num in nums:
randament 2 * num
pentru n în gen_square (gen_even (15)):
print (n)


Ex: Generatoare multiple: creați serii Fibnacci și adăugați valoare 10 fiecare număr.

Generator1: generează serii Fibonacci dintr-un număr dat

Generator2: adăugați fiecare număr cu 10 din generator1

def gen_fib (n):
x, y = 0, 1
în timp ce x < n:
randament x
x, y = y, x + y
def gen_add_10 (nums):
pentru num in nums:
randament 10 + num
pentru n în gen_add_10 (gen_fib (5)):
print (n)


Înțelegeri ale generatorului:

Înțelegerile generatorului sunt similare cu înțelegerile listei în care lista utilizează paranteze pătrate; aceasta folosește o paranteză normală.

Ex:

nums = (i pentru i în intervalul (10))
print (tip (nums))
print (list (nums))

Diferența dintre generator și funcția normală:

  1. Un generator furnizează valori folosind Randament cuvânt cheie în care funcția normală folosește întoarcere cuvânt cheie
  2. Generatorul pornește de unde s-a oprit când a fost chemat data viitoare. Funcția normală execută toate instrucțiunile de fiecare dată.
  3. Generatorul economisește memorie, deoarece returnează o valoare la un moment dat. Așadar, îl putem folosi pentru a genera valori infinite.

Concluzie:

Generatorul este foarte util atunci când manipulăm date imense / mari. La un moment dat, deține o singură bucată de date, mai degrabă decât date întregi. Conceptul de generatoare este considerat un concept avansat în python.

Top 5 cărți de captură a jocului
Cu toții am văzut și ne-au plăcut jocurile de streaming pe YouTube. PewDiePie, Jakesepticye și Markiplier sunt doar câțiva dintre cei mai buni jucător...
Cum să dezvolți un joc pe Linux
Acum un deceniu, nu mulți utilizatori de Linux ar fi prezis că sistemul lor de operare preferat va fi într-o zi o platformă populară de jocuri pentru ...
Open Source Ports of Commercial Game Engines
Free, open source and cross-platform game engine recreations can be used to play old as well as some of the fairly recent game titles. This article wi...