Generator dengan Python

Ulasan Python Petunjuk Gratis — #PySeries#Episode 17

#GENERATORS DI PYTHON: Apa itu?

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.

Mari kita mulai dengan fungsi fibonacci :

Keluaran (Memasuki 10):

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

02 #PyEx — Python —Fungsi — Fubonacci Sederhana :

Mari kita sederhanakan kode untuk pelajaran ini, pertimbangkan potongan kode ini (Nol keluar :)

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]

Ayo dapatkan satu!

Sekarang gunakan kata kunci hasil dalam fungsi fibo kedua untuk membuatnya lebih hemat memori :-)

03 #PyEx — Python — Fungsi — Fubonacci dengan hasil :

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>

Apakah Anda melihat perbedaannya? Tidak? Jadi teruslah membaca…

Fungsi terakhir ini adalah Generator. Apa itu Generator?

Sebuah Generator itu jauh lebih efisien dalam kaitannya dengan penggunaan memori; kita tidak memuat data sepenuhnya, dalam memori, seperti dalam kode dengan append();

Kami hanya bekerja dalam aliran, yaitu, kami menyimpan satu-satunya data yang mendahuluinya, dan dengan demikian kami menghemat memori; objeknya jauh lebih sederhana :)

Fungsi lain yang dapat berinteraksi:

Mari kita lihat generator lain:

04 #PyEx — Python — Fungsi — Generator Sederhana :

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

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

Hasil:

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

05 #PyEx — Python — String —Apakah dapat berinteraksi?

Sekarang, mari kita lihat apakah objek string dapat berinteraksi…

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

Untuk mengubah String menjadi objek yang dapat berinteraksi, gunakan fungsi iter() :

s_iter = iter(s)
next(s_iter)

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

Jadi, inilah kode generator terakhir untuk fungsi fibonacci kita:

Hasil:

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

Catatan ini berisi kutipan dari Python Data Science Handbook oleh Jake VanderPlas;

Konten tersedia di GitHub .

Teks dirilis di bawah lisensi CC-BY-NC-ND , dan kode dirilis di bawah lisensi MIT . Jika menurut Anda konten ini bermanfaat, pertimbangkan untuk mendukung karya ini dengan membeli buku !

Sekarang jalankan pip:

07 #PyEx — Python — String —Profiling & Pengaturan Waktu

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:)

Sampai Lain waktu!

Saya berharap Anda hari yang luar biasa!

Berhati-hatilah!

Bersulang!

Notebook Google Colab ada di sini:

Tautan Buku Catatan Colab :)

Link Google Drive :)

Posting Terkait:

00Episode# PySeries — Python — Jupiter Notebook Mulai Cepat dengan VSCode — Cara Mengatur Lingkungan Win10 Anda untuk menggunakan Notebook Jupiter

01Episode# PySeries — Python — Python 4 Engineers — Latihan! Ikhtisar Peluang yang Ditawarkan oleh Python dalam Rekayasa!

02Episode# PySeries — Python — Geogebra Plus Pemrograman Linier- Kami akan Membuat program Geogebra untuk membantu kami dengan pemrograman linier kami

03Episode# PySeries — Python — Python 4 Engineers — Lebih Banyak Latihan! — Putaran Lain untuk Memastikan Python Benar-Benar Menakjubkan!

04Episode# PySeries — Python — Regresi Linier — Dasar-Dasar — ​​Cara Memahami Regresi Linier Sekali dan Untuk Semua!

05Episode# PySeries — Python — NumPy Init & Review Python — Review & Inisialisasi Python Crash di NumPy lib.

06Episode# PySeries — Python — NumPy Arrays & Jupyter Notebook — Operasi Aritmatika, Pengindeksan & Pengirisan, dan Pemilihan Bersyarat dengan array np.

07Episode# PySeries — Python — Pandas — Intro & Seri — Apa itu? Bagaimana cara menggunakannya?

08Episode# PySeries — Python — Pandas DataFrames — Struktur data utama Pandas! Ini adalah wadah seperti dict untuk objek Seri

09Episode# PySeries — Python — Python 4 Engineers — Lebih Banyak Latihan! — Lebih Banyak Berlatih Pertanyaan Coding dengan Python!

10Episode# PySeries — Python — Pandas — Hierarchical Index & Cross-section — Buka notebook Colab Anda dan berikut adalah latihan lanjutannya!

11Episode# PySeries — Python — Pandas — Data Hilang — Mari Melanjutkan Latihan Python — Mengisi & Menghapus Data yang Hilang

12Episode# PySeries — Python — Pandas — Group By — Mengelompokkan sejumlah besar data dan menghitung operasi pada grup ini

13Episode# PySeries — Python — Pandas — Penggabungan, Penggabungan & Penggabungan — Fasilitas Untuk Menggabungkan Seri atau DataFrame Dengan Mudah

14Episode# PySeries — Python — Pandas — Pandas Dataframe Contoh: Operasi Kolom

15Episode# PySeries — Python — Python 4 Engineers — Menyimpannya Dalam Memori Jangka Pendek — Uji Dirimu! Pengkodean dengan Python, Lagi!

16Episode# PySeries — NumPy — NumPy Review, Lagi ;) — Python Review Latihan Gratis

17Episode# PySeries —Generator dengan Python — Python Tinjau Petunjuk Gratis (yang ini)

Suggested posts

Cara menjalankan plugin ChatGPT secara gratis menggunakan Langchain

Cara menjalankan plugin ChatGPT secara gratis menggunakan Langchain

Anda pasti pernah mendengar tentang semua plugin ChatGPT baru yang kuat seperti Browser, Code Interpreter, dll. Namun ada masalah, akses ke plugin terbatas pada daftar tunggu sehingga banyak yang tidak memiliki akses ke sana.

Sumber daya pengkodean saya yang paling sering digunakan

Sumber daya pengkodean saya yang paling sering digunakan

Minggu ini, saya menerima email dari anggota daftar email harian. Mereka ingin tahu: Sumber daya apa yang Anda kunjungi setiap hari, setiap minggu, dan setiap bulan? Pertanyaan bagus! Saya senang untuk mencoba membagikan beberapa wawasan tentang alur kerja saya & sumber daya teratas yang saya gunakan.

Related posts

Revolusi Tempat Kerja: Para Ahli Teratas Membahas Kerja Hibrid dan Jarak Jauh

Revolusi Tempat Kerja: Para Ahli Teratas Membahas Kerja Hibrid dan Jarak Jauh

Dalam lanskap bisnis yang berkembang pesat saat ini, konsep kerja hibrid dan jarak jauh telah mendapatkan momentum yang belum pernah terjadi sebelumnya. Saat perusahaan terus beradaptasi dengan perubahan kebutuhan dan harapan karyawan mereka, para ahli dari berbagai bidang berkumpul untuk membahas manfaat, tantangan, dan masa depan cara kerja transformatif ini.

Pembunuhan Jordan Neely dan Masalah Rasisme “Patriotik”.

Bisakah AS mengambil langkah penting untuk tidak menyamakan perilaku rasis dengan menjadi orang Amerika yang baik?

Pembunuhan Jordan Neely dan Masalah Rasisme “Patriotik”.

[Peringatan pemicu: Esai ini mencakup tangkapan layar orang-orang yang memuji pembunuh Jordan Neely.] Petugas penegak hukum akhirnya - dan mungkin dengan enggan - menuntut Daniel Penny, pria yang mencekik Jordan Neely sampai dia mati, atas pembunuhan itu.

Cara Menyelamatkan Planet dan Menghasilkan Uang

Cara Menyelamatkan Planet dan Menghasilkan Uang

Berapa kali Anda membuang botol plastik, toples kaca, kaleng aluminium, atau paket energi hijau tanpa berpikir dua kali? Berapa kali Anda berharap bisa mendapatkan sesuatu sebagai imbalan untuk mendaur ulangnya? Jika Anda seperti kebanyakan orang, jawabannya mungkin berkali-kali. Daur ulang sering dianggap merepotkan, tugas, atau tugas yang tidak membawa manfaat langsung atau nyata.

Jaringan TV Twitter

Jaringan TV Twitter

Apa yang lama sekarang menjadi baru lagi dan apa yang dulu berkilau berkilau sekarang terasa kusam. Saya tidak berbicara tentang jeans JNCO yang kembali populer di antara anak-anak keren di pusat kota bersama dengan mode akhir 1990-an lainnya.