Pitone

Generatore di Python

Generatore di Python
In questo argomento, impareremo Python Generator.

Definizione: Un generatore è come una normale funzione che genera un intervallo di valori utilizzando il dare la precedenza parola chiave. Restituisce un oggetto alla volta. Utilizza internamente un iteratore. Per accedere all'elemento successivo Il prossimo() viene utilizzata la funzione, oppure possiamo usarla per un ciclo continuo. Se proviamo ad accedere al valore fuori range, alza a Interrompi iterazione errore.

Vedremo qualche esempio per capire meglio

Ex: funzione generatore per range di valori

def range_fun(n):
x = 0
mentre x < n:
rendimento x
x += 1
y = range_fun (3)
#chiama usando il ciclo for
print('Genera valori usando il metodo next()')
per i in range_fun(3):
stampa(i)
#call generator usando il metodo successivo
print('Genera valori usando il metodo for loop')
stampa (successivo (y))
stampa (successivo (y))
stampa (successivo (y))
print(next(y))#Stop L'eccezione di iterazione verrà sollevata

Ex: Funzione generatore per la serie di Fibonacci

def fib_fun(n):
x, y = 0, 1
mentre x < n:
rendimento x
x, y = y, x + y
z = fib_fun(6) #oggetto generatore
print('Genera valori usando il metodo next()')
stampa(successivo(z))
stampa(successivo(z))
stampa(successivo(z))
stampa(successivo(z))
stampa(successivo(z))
stampa(successivo(z))
print('Genera valori usando il metodo for loop')
per io in fib_fun(6):
stampa(i)

Ex: Funzione generatore per la creazione di un intervallo di valori dati i valori iniziali e finali.

def mio_intervallo(inizio, fine):
corrente = inizio
mentre attuale < end:
resa corrente
corrente +=1
print('Genera valori usando il metodo next()')
numeri = mio_intervallo(1,5)
print(successivo(numeri))
print(successivo(numeri))
print(successivo(numeri))
print(successivo(numeri))
print('Genera valori usando il metodo for loop')
per num in my_range(1,5):
stampa (numero)

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 l'intervallo 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: generatori multipli: trova il quadrato dei numeri pari generati da un numero

Generatore 1: genera valori pari da un dato numero

Generatore 2: genera numeri quadrati dai valori del generatore1

def gen_even(m):
n = 0
mentre n < m:
se n % 2 == 0:
resa n
n += 2
def gen_square(nums):
per num in num:
resa 2 * num
per n in gen_square(gen_even(15)):
stampa(n)


Ex: Generatori multipli: crea serie di fibnacci e aggiungi valore 10 ogni numero.

Generator1: genera serie di Fibonacci da un dato numero

Generator2: aggiungi ogni numero per 10 da generator1

def gen_fib(n):
x, y = 0, 1
mentre x < n:
rendimento x
x, y = y, x + y
def gen_add_10(num):
per num in num:
rendimento 10 + num
per n in gen_add_10(gen_fib(5)):
stampa(n)


Comprensioni del generatore:

Le comprensioni del generatore sono simili alle comprensioni di elenco in cui l'elenco utilizza parentesi quadre; questo usa la parentesi normale.

Ex:

nums = (i per i in range(10))
print(tipo(numeri))
print(lista(numeri))

Differenza tra generatore e funzione normale:

  1. Un generatore fornisce valori usando dare la precedenza parola chiave dove la funzione normale usa il ritorno parola chiave
  2. Il generatore si avvia da dove si è fermato quando chiamato la prossima volta. La funzione normale esegue tutte le istruzioni ogni volta.
  3. 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/grandi. In un dato momento, contiene solo un singolo pezzo di dati anziché interi dati. Il concetto di generatori è considerato un concetto avanzato in Python.

I 10 migliori giochi da giocare su Ubuntu
La piattaforma Windows è stata una delle piattaforme dominanti per i giochi a causa dell'enorme percentuale di giochi che si stanno sviluppando oggi p...
I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...
Battaglia per Wesnoth 1.13.6 Sviluppo rilasciato
Battaglia per Wesnoth 1.13.6 rilasciato il mese scorso, è la sesta versione di sviluppo nella 1.13.x e offre una serie di miglioramenti, in particolar...