Jak tworzyć i używać generatorów Pythona

Jak Tworzyc I Uzywac Generatorow Pythona



Pracując jako programista często musisz pracować z wieloma nieistotnymi wartościami danych. Przechowywanie tych wartości zużywa część pamięci, zmniejszając wydajność kodu. Jednak w Pythonie możesz użyć generatorów, aby uniknąć tej straty.

Dzięki generatorom możesz masowo wytwarzać wartości określonej sekwencji bez przechowywania ich w całości w pamięci. Ponadto funkcja „generator” tworzy obiekt, który po iteracji generuje wartości. Jeśli więc chcesz poznać generatory Pythona, ten poradnik jest dla Ciebie. Tutaj wyjaśnimy, jak tworzyć i używać generatorów Pythona.

Jak tworzyć i używać generatorów Pythona

Generatory Pythona służą do efektywnej pracy z sekwencjami danych, głównie w przypadku dużych lub prawie nieskończonych zbiorów danych. Zalety generatorów Pythona to:







  1. Zwięzły: Generatory można łatwo i zwięźle zdefiniować, co poprawia czytelność kodu.
  2. Wydajność pamięci: Generują jednocześnie jedną wartość, co zużywa mniej pamięci i poprawia wydajność.
  3. Wbudowane funkcje: W Pythonie generatory mają predefiniowane funkcje, takie jak next(), iter() i Yiod, aby ułatwić ich pracę.
  4. Funkcja wstrzymywania i wznawiania: Podczas pracy nad złożonymi algorytmami można skorzystać z funkcji „uzysku”, aby wstrzymać i wznowić pracę generatorów.

W Pythonie możesz tworzyć generatory i używać ich na różne sposoby. Podzielimy tę sekcję, aby zademonstrować jej wdrożenie na różnych przykładach. Najpierw przyjrzyjmy się podstawowej składni:



def nazwa_funkcji ( ) :
dawać wyrażenie

„def” definiuje funkcję, a „yield” służy do zbudowania funkcji „generatora”. Jednak inna metoda pomaga również utworzyć generator używający tylko wyrażeń jednowierszowych.



Funkcja generatora generująca ciąg znaków

Zdefiniujmy funkcję generatora, aby uzyskać pewną wartość:





def generator ( ) :
dawać „To jest generator”
Do wartość W generator ( ) :
wydrukować ( wartość )

Kiedy iterujemy po nim za pomocą pętli „for”, program generuje określone wartości, które można wydrukować za pomocą funkcji „drukuj”.



Funkcja generatora do tworzenia licznika

Poniższy program jest przykładem funkcji generatora generującej ciąg liczb:

def mój_generator ( N ) :
lada = 0
chwila lada < N:
dawać lada
licznik + = 1
Do lada W mój_generator ( 10 ) :
wydrukować ( lada )

Na przykład, jeśli wejściową wartością jest 10, po skompilowaniu tego kodu otrzymasz wartości od 0 do 9.

Szereg Fibonacciego przy użyciu funkcji generatora

Skorzystajmy teraz z szeregu Fibonacciego, który jest najbardziej podstawowym szeregiem w programowaniu:

def seria_fibonacciego ( limit ) :
I , J = 0 , 1
chwila I < limit:
dawać I
I , J = J , ja + j

A = seria_fibonacciego ( 6 )

wydrukować ( Następny ( A ) )
wydrukować ( Następny ( A ) )
wydrukować ( Następny ( A ) )
wydrukować ( Następny ( A ) )
wydrukować ( Następny ( A ) )
wydrukować ( Następny ( A ) )

Otrzymamy serię w następujący sposób, uruchamiając kod:

Najpierw utwórz obiekt o nazwie „a” i wywołaj funkcję „generator” podając żądane dane wejściowe jako argument.

Słowo kluczowe next() jest iteratorem ręcznym. Za każdym razem, gdy używamy metody next(a), iteruje ona po jednej wartości „a”. Możemy jednak użyć pętli „for”, aby wydrukować wszystkie wartości „a” na raz, jak pokazano w poniższym przykładzie:

Użycie pętli „for” zamiast funkcji next():

def seria_fibonacciego ( limit ) :
I , J = 0 , 1
chwila I < limit:
dawać I
I , J = J , ja + j

A = seria_fibonacciego ( 6 )
Do wartość W A :
wydrukować ( wartość )

Wynik uruchomienia kodu nie będzie się różnił, ponieważ jest to alternatywna metoda napisania poprzedniego programu:

Jakie są wyrażenia generatora w Pythonie?

Wyrażenia generatorowe Pythona to sposób na zwięzłe tworzenie funkcji „generatora” przy użyciu wyrażeń liniowych. Oto prosta składnia:

( wyrażenie Do zmienny W iterowalne Jeśli stan )

Na przykład utwórz wyrażenie generatora, aby obliczyć kwadraty liczb nieparzystych od 0 do „n”, gdy „n” jest wartością wejściową.

nieparzyste_kwadraty = ( x * x Do X W zakres ( 10 ) Jeśli X % 2 != 0 )
Do wartość W dziwne_kwadraty:
wydrukować ( wartość )

Poprzedni kod daje następujący wynik:

Wniosek

Chodzi tu o różne metody tworzenia i używania generatorów Pythona. Wyjaśniliśmy wszystko na temat wyrażeń generatora Pythona. Powinieneś użyć tych wyrażeń, jeśli rozważasz użycie generatorów w którymkolwiek ze swoich projektów, ponieważ są one bardziej wydajne w każdym aspekcie programowania.