Generator Python

Generator Python
W tym temacie nauczymy się Python Generator.

Definicja: Generator jest jak normalna funkcja, która generuje zakres wartości za pomocą dawać Słowo kluczowe. Zwraca jeden obiekt na raz. Wewnętrznie używa iteratora. Aby uzyskać dostęp do następnego elementu Następny() Funkcja jest używana lub możemy z niej korzystać Do pętla. Jeśli spróbujemy uzyskać dostęp do wartości poza zakresem, podnosi Przerwanie błąd.

Zobaczymy jakiś przykład, aby lepiej zrozumieć

Były: Funkcja generatora dla zakresu wartości

def Range_fun (n):
x = 0
podczas gdy x < n:
Wydaj x
x += 1
y = range_fun (3)
#Zajmuj się do pętli
print („generuj wartości za pomocą metody następnej ()”)
Dla I in Range_fun (3):
Drukuj (i)
#generator przy użyciu następnej metody
print („generuj wartości za pomocą metody pętli”)
Drukuj (następny (y))
Drukuj (następny (y))
Drukuj (następny (y))
Drukuj (następny (y))#Zatrzymaj wyjątek iteracja zostanie podniesiony

Były: Funkcja generatora dla serii Fibonaccie

def fib_fun (n):
x, y = 0, 1
podczas gdy x < n:
Wydaj x
x, y = y, x + y
Z = fib_fun (6) #Generator obiekt
print („generuj wartości za pomocą metody następnej ()”)
druk (następny (z))
druk (następny (z))
druk (następny (z))
druk (następny (z))
druk (następny (z))
druk (następny (z))
print („generuj wartości za pomocą metody pętli”)
Dla i w fib_fun (6):
Drukuj (i)

Były: Funkcja generatora do tworzenia zakresu wartości podanych wartości początkowych i końcowych.

def my_range (start, koniec):
prąd = start
podczas gdy obecny < end:
Udaj prąd
prąd += 1
print („generuj wartości za pomocą metody następnej ()”)
NUMS = my_range (1,5)
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
print („generuj wartości za pomocą metody pętli”)
dla num w my_range (1,5):
druk (num)

Były: Generator, aby pomnożyć każdą liczbę (mniej niż liczbę) przez liczbę

def gen_mulby_num (max, num):
n = 0
podczas gdy n < max:
Wydaj n * num
n += 1
Dla i w gen_mulby_num (5,3):
Drukuj (i)

Były: Generator do znalezienia kostki dla zakresu wartości

def gen_mulby_num (max, num):
n = 0
podczas gdy n < max:
Wydaj n * num
n += 1
Dla i w gen_mulby_num (5,3):
Drukuj (i)

Były: Wiele generatorów: Znajdź kwadrat liczb wygenerowanych z liczby

Generator 1: Generuj równomierne wartości z danej liczby

Generator 2: Generuj liczby kwadratowe z wartości generatora1

def gen_even (m):
n = 0
podczas gdy n < m:
Jeśli n % 2 == 0:
wydajność n
n += 2
def gen_square (nums):
dla NUM in Nums:
Wydaj 2 * num
dla n w gen_square (gen_even (15)):
Drukuj (n)


Były: Wiele generatorów: Utwórz serię fibnaccie i dodaj wartość 10 każdą liczbę.

Generator1: Generuje serię Fibonacciego z danej liczby

Generator2: Dodaj każdą liczbę o 10 z generatora1

def gen_fib (n):
x, y = 0, 1
podczas gdy x < n:
Wydaj x
x, y = y, x + y
def gen_add_10 (nums):
dla NUM in Nums:
Wydaj 10 + NUM
dla n w gen_add_10 (gen_fib (5)):
Drukuj (n)


Rozumienia generatora:

Rozumienia generatora są podobne do zrozumienia listy, w których lista używa nawiasów kwadratowych; Wykorzystuje to normalny nawias.

Były:

nums = (i dla i w zakresie (10))
druk (typ (nums))
drukuj (lista (nums))

Różnica między funkcją generatora a normalną:

  1. Generator zapewnia wartości za pomocą dawać słowo kluczowe, w którym normalna funkcja używa powrót Słowo kluczowe
  2. Generator zaczyna od miejsca, w którym zatrzymał się, gdy zadzwoni następnym razem. Normalna funkcja wykonuje wszystkie instrukcje za każdym razem.
  3. Generator zapisuje pamięć, ponieważ zwraca jedną wartość na raz. Więc możemy go użyć do generowania nieskończonych wartości.

Wniosek:

Generator jest bardzo pomocny, gdy obsługujemy ogromne/duże dane. W danym momencie zawiera tylko jeden kawałek danych, a nie całe dane. Koncepcja generatorów jest uważana za zaawansowaną koncepcję w Pythonie.