In questo argomento, impareremo il generatore di Python.
Definizione: Un generatore è come una funzione normale che genera un intervallo di valori utilizzando il prodotto parola chiave. Restituisce un oggetto alla volta. Usa internamente un iteratore. Per accedere all'elemento successivo Prossimo() la funzione viene utilizzata o possiamo usarla per un ciclo continuo. Se proviamo ad accedere al valore al di fuori dell'intervallo, aumenta a Stopiteration errore.
Vedremo qualche esempio per capire meglio
Ex: Funzione del generatore per l'intervallo di valori
def range_fun (n):
x = 0
mentre x < n:
Resa x
x += 1
y = range_fun (3)
#Call usando per loop
Print ('Genera valori usando il metodo Next ()')
per i in gamma_fun (3):
Stampa (i)
#Call Generator utilizzando il metodo successivo
print ("genera valori utilizzando per il metodo Loop")
Stampa (Next (Y))
Stampa (Next (Y))
Stampa (Next (Y))
Stampa (Next (Y))#Stop Iterazione Eccezione verrà sollevata
Ex: Funzione del generatore per la serie Fibonacci
def fib_fun (n):
x, y = 0, 1
mentre x < n:
Resa x
x, y = y, x + y
z = FIB_FUN (6) #GENERATOR
Print ('Genera valori usando il metodo Next ()')
Stampa (Next (Z))
Stampa (Next (Z))
Stampa (Next (Z))
Stampa (Next (Z))
Stampa (Next (Z))
Stampa (Next (Z))
print ("genera valori utilizzando per il metodo Loop")
Per i in fib_fun (6):
Stampa (i)
Ex: Funzione del generatore per la creazione di valori forniti valori di avvio e fine.
def my_range (inizio, fine):
corrente = avvio
mentre corrente < end:
Rendi corrente
corrente += 1
Print ('Genera valori usando il metodo Next ()')
nums = my_range (1,5)
Stampa (Next (nums))
Stampa (Next (nums))
Stampa (Next (nums))
Stampa (Next (nums))
print ("genera valori utilizzando per il metodo Loop")
per num in my_range (1,5):
Stampa (num)
Ex: Generatore per moltiplicare ogni numero (meno di un numero) per un numero
def gen_mulby_num (max, num):
n = 0
mentre n < max:
resa n * num
n += 1
Per I in Gen_Mulby_num (5,3):
Stampa (i)
Ex: Generatore per trovare il cubo per una gamma di valori
def gen_mulby_num (max, num):
n = 0
mentre n < max:
resa n * num
n += 1
Per I in Gen_Mulby_num (5,3):
Stampa (i)
Ex: più generatori: trova il quadrato di numeri pari generati da un numero
Generatore 1: generare anche valori da un determinato numero
Generatore 2: generare numeri quadrati dai valori di Generator1
def gen_even (m):
n = 0
mentre n < m:
Se n % 2 == 0:
Resa n
n += 2
def gen_square (nums):
per num in nums:
Resa 2 * Num
per n in gen_square (gen_even (15)):
Stampa (N)
Ex: Più generatori: creare serie Fibnacci e aggiungere valore 10 ogni numero.
Generator1: genera serie Fibonacci da un determinato numero
Generator2: aggiungi ogni numero di 10 da Generator1
def gen_fib (n):
x, y = 0, 1
mentre x < n:
Resa x
x, y = y, x + y
def gen_add_10 (nums):
per num in nums:
Resa 10 + Num
per n in gen_add_10 (gen_fib (5)):
Stampa (N)
Comprensioni del generatore:
Le comprensioni del generatore sono simili alle comprensioni dell'elenco in cui l'elenco utilizza parentesi quadrate; Questo usa parentesi normale.
Ex:
nums = (i per i nell'intervallo (10))
Stampa (tipo (nums))
Stampa (elenco (nums))
Differenza tra generatore e funzione normale:
- Un generatore fornisce valori utilizzando prodotto parola chiave dove la funzione normale utilizza il ritorno parola chiave
- Il generatore inizia da dove si è fermato quando viene chiamato la prossima volta. La funzione normale esegue ogni volta tutte le dichiarazioni.
- Il generatore salva la memoria in quanto restituisce un valore alla volta. Quindi possiamo usarlo per generare valori infiniti.
Conclusione:
Il generatore è molto utile quando gestiamo dati enormi/di grandi dimensioni. In un determinato momento, contiene solo un singolo pezzo di dati piuttosto che interi dati. Il concetto di generatori è considerato un concetto avanzato in Python.