Generatory w Pythonie

Darmowe wskazówki dotyczące recenzji Pythona — #PySeries#Odcinek 17

#GENERATORS W PYTONIE: Co to jest?

Generators in Python allows us to write a function that can send back a value and then later resume to pick up where it left off.

Zacznijmy od funkcji Fibonacciego :

Wyjście (wprowadzanie 10):

How many terms? 10 Fibonacci sequence: 
0 
1 
1 
2 
3 
5 
8 
13 
21 
34

02 #PyEx — Python — Funkcja — Fubonacci Uproszczony :

Uprośćmy kod tej lekcji, rozważmy ten fragment kodu (Zero out:)

def gen_fibo(n):
a = 1
b = 1
output = []
for i in range(n):
output.append(a)
a,b = b, a + b
return output

gen_fibo(10)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

Zdobądźmy jednego!

Teraz używam słowa kluczowego yield w drugiej funkcji fibo, aby zwiększyć wydajność pamięci :-)

03 #PyEx — Python — Funkcja — Fubonacci z wydajnością :

def gen_fibo(n):
a = 1
b = 1
for i in range(n - 1):
yield a
a, b = a, a + b

g = gen_fibo(10)
g
<generator object gen_fibo at 0x7f0cecb33ed0>

Czy widzisz różnicę? Nie? Więc czytaj dalej…

Ta ostatnia funkcja to Generator. Czym w końcu jest generator?

A Generatory jest znacznie bardziej wydajny w stosunku do wykorzystania pamięci; nie ładujemy danych całkowicie, do pamięci, jak w kodzie z append();

Pracujemy tylko strumieniowo, to znaczy zapisujemy tylko te dane, które bezpośrednio go poprzedzają, a więc oszczędzamy pamięć; obiekt jest znacznie prostszy :)

Kolejna interaktywna funkcja:

Zobaczmy inny generator:

04 #PyEx — Python — Funkcja — Prosty generator :

def simple_gen():
for x in range (4):
yield x

g = simple_gen()
g
<generator object simple_gen at 0x7f0cecb334d0>

Wyjście:

next(g)
0
next(g)
1
next(g)
2
next(g)
3

05 #PyEx — Python — String — Czy są interaktywne?

Zobaczmy teraz, czy obiekt tekstowy jest interakcyjny…

s = ‘hello’
for letter in s:
print(letter)
h
e
l
l
o

next(s)
---------------------------------------------------------------TypeError                           Traceback (most recent call last)
<ipython-input-262-46f008985a16> in <module>()
      1 # String is not interactable:/
----> 2 next(s)
TypeError: 'str' object is not an iterator

Do przekształcenia Strings w interaktywny obiekt użyj funkcji iter() :

s_iter = iter(s)
next(s_iter)

next(s_iter)
'h'
next(s_iter)
'e'
(...)

Oto ostateczny kod generatora dla naszej funkcji Fibonacciego:

Wyjście:

g = prog_fibo_2(10)
g
<generator object gen_fibo_ef at 0x7f0cecb34350>
next(g)
1
next(g)
1
next(g)
2
(...)

Ta notatka zawiera fragment podręcznika Python Data Science Handbook autorstwa Jake'a VanderPlas;

Zawartość jest dostępna w serwisie GitHub .

Tekst wydawany jest na licencji CC-BY-NC-ND , a kod na licencji MIT . Jeśli uznasz te treści za przydatne, rozważ wsparcie pracy poprzez zakup książki !

Teraz uruchom pip:

07 #PyEx — Python — String —Profilowanie i synchronizacja

pip install memory_profiler
Requirement already satisfied: memory_profiler in /usr/local/lib/python3.7/dist-packages (0.58.0) Requirement already satisfied: psutil in /usr/local/lib/python3.7/dist-packages (from memory_profiler) (5.4.8)

%load_ext memory_profiler
The memory_profiler extension is already loaded. To reload it, use:   %reload_ext memory_profiler

def gen_fibo(n):
a = 1
b = 1
output = []
for i in range(n):
output.append(a)
a,b = b, a + b
return output

%timeit gen_fibo(10)
1000000 loops, best of 5: 1.31 µs per loop

def prog_fibo_2(n):
 a = 1
 b = 1
 for i in range(n):
    yield a
    a, b = b, a + b

%timeit prog_fibo_2(10)
1000000 loops, best of 5: 236 ns per loop

print(“That’s it! thank you for reading his episode about the wonders of Python:) “)
That's it! thank you for reading his episode about the wonders of Python:)

Do następnego razu!

Życzę miłego dnia!

Bądź bezpieczny!

Twoje zdrowie!

Notatniki Google Colab są tutaj:

Link do notatnika Colab :)

Link do Dysku Google :)

Posty powiązane:

00Episode# PySeries — Python — Jupiter Notebook — szybki start z VSCode — Jak skonfigurować środowisko Win10 do korzystania z programu Jupiter Notebook

01Odcinek# PySeries — Python — Python 4 Engineers — Ćwiczenia! Przegląd możliwości oferowanych przez Python w inżynierii!

02Episode# PySeries — Python — Geogebra Plus Programowanie liniowe — Stworzymy program Geogebra, który pomoże nam w naszym programowaniu liniowym

03Odcinek# PySeries — Python — Python 4 Engineers — Więcej ćwiczeń! — Kolejna runda, aby upewnić się, że Python jest naprawdę niesamowity!

04Odcinek# PySeries — Python — Regresje liniowe — Podstawy — Jak zrozumieć regresję liniową raz na zawsze!

05Odcinek# PySeries — Python — NumPy Init i przegląd Pythona — Przegląd i inicjalizacja Crash Pythona w bibliotece NumPy.

06Episode# PySeries — Python — Tablice NumPy i Notatnik Jupyter — Operacje arytmetyczne, indeksowanie i cięcie oraz zaznaczanie warunkowe z tablicami np.

07Episode# PySeries — Python — Pandy — Intro & Series — Co to jest? Jak tego użyć?

08Episode# PySeries — Python — Pandas DataFrames — Podstawowa struktura danych Pand! Jest to kontener podobny do dyktatu dla obiektów serii

09Odcinek# PySeries — Python — Python 4 Engineers — Jeszcze więcej ćwiczeń! — Więcej praktycznych pytań dotyczących kodowania w Pythonie!

10Episode# PySeries — Python — Pandy — Indeks hierarchiczny i przekrój — Otwórz swój notatnik Colab i oto ćwiczenia uzupełniające!

11Odcinek# PySeries — Python — Pandy — Brakujące dane — Kontynuujmy ćwiczenia w Pythonie — Uzupełnianie i usuwanie brakujących danych

12Episode# PySeries — Python — Pandy — Group By — Grupowanie dużych ilości danych i operacje obliczeniowe na tych grupach

13Episode# PySeries — Python — Pandy — Łączenie, łączenie i konkatenacje — Udogodnienia do łatwego łączenia serii lub DataFrame

14Episode# PySeries — Python — Pandas — Pandas Dataframe Przykłady: Operacje na kolumnach

15Episode# PySeries — Python — Python 4 Engineers — Przechowywanie w pamięci krótkotrwałej — Sprawdź sam! Kodowanie w Pythonie, znowu!

16Episode# PySeries — NumPy — NumPy Review, znowu;) — Python Review Darmowe ćwiczenia

17Episode# PySeries — Generatory w Pythonie — Python Review Darmowe wskazówki (ten)

Suggested posts

Jak bezpłatnie uruchamiać wtyczki ChatGPT za pomocą Langchain

Jak bezpłatnie uruchamiać wtyczki ChatGPT za pomocą Langchain

Na pewno słyszałeś o wszystkich nowych, potężnych wtyczkach ChatGPT, takich jak przeglądarka, interpreter kodu itp. Ale jest problem, dostęp do wtyczek jest ograniczony do listy oczekujących, przez co wielu nie ma do nich dostępu.

Moje najczęściej używane zasoby dotyczące kodowania

Moje najczęściej używane zasoby dotyczące kodowania

W tym tygodniu otrzymałem wiadomość e-mail od członka codziennej listy e-mailowej. Chcieli wiedzieć: Jakie zasoby odwiedzasz codziennie, co tydzień i co miesiąc? Świetne pytanie! Cieszę się, że mogę podzielić się spostrzeżeniami na temat mojego przepływu pracy i najlepszych zasobów, z których korzystam.

Related posts

Dlaczego niektórzy freelancerzy udają swoje życie

Dlaczego niektórzy freelancerzy udają swoje życie

Niedawno byłem na Linkedin, największej profesjonalnej sieci społecznościowej na świecie, i znalazłem posty obserwowanych przeze mnie niezależnych projektantów, którzy przykuli moją uwagę. Wszyscy zamieszczali zdjęcia z samolotów, na plaży z laptopami, z basenów i biur z niesamowitymi widokami.

NIEOGRANICZONE ŻYCIE

Kiedy dorastasz, zwykle słyszysz, że świat jest taki, jaki jest, a twoje życie polega na tym, by żyć swoim życiem w świecie, nigdy nie ryzykując życia, po prostu podążaj wyznaczoną ścieżką i umrzyj w końcu i staraj się nie za bardzo walnij w ściany. Ale to bardzo ograniczone życie.

Zbieranie OSINT na potrzeby polowania na zagrożenia

Zbieranie OSINT na potrzeby polowania na zagrożenia

Hej, cyberentuzjaści! Witamy ponownie w serii OSINT poświęconej polowaniu na zagrożenia. W pierwszym artykule przedstawiłem przegląd OSINT i jego znaczenie w polowaniu na zagrożenia.

Kłamstwo kowbojskie

Jak megakorporacje sprzedały Amerykanom mocne kłamstwo

Kłamstwo kowbojskie

Jest wspaniale złoty poranek na falistych wzgórzach zachodu, gdy pierwsze promienie słońca oświetlają oszronioną trawę na równinach. Stado spokojnego bydła rasy Angus, czarnego jak smoła i masywne, rysuje się na tle wschodu słońca, gdy zmierza utartym szlakiem do miejsca, które wszyscy dobrze znają; bar śniadaniowy.