Apa itu Generator dengan Python dan Bagaimana cara menggunakannya?



Pelajari apa itu generator dengan Python beserta keuntungannya. Pelajari juga cara membuat dan menggunakannya bersama dengan berbagai kasus penggunaan.

Menghasilkan iterable atau objek yang memungkinkan untuk melangkahinya dianggap sebagai tugas yang memberatkan. Tapi, di , implementasi tugas yang menyakitkan ini menjadi sangat lancar. Jadi, mari kita lanjutkan dan lihat lebih dekat Generator dengan Python.

Berikut adalah daftar semua topik yang dibahas dalam artikel ini:





Mari kita mulai. :)

Apa itu Generator dengan Python?

Generator pada dasarnya adalah fungsi yang mengembalikan objek atau item yang dapat dilalui. Fungsi ini tidak menghasilkan semua item sekaligus, melainkan memproduksinya satu per satu dan hanya jika diperlukan. Kapanpun disertakan untuk mengulangi satu set item, fungsi generator dijalankan. Generator juga memiliki sejumlah keunggulan.



Keuntungan menggunakan Generator

  • Tanpa Generator dengan Python, menghasilkan iterable sangat sulit dan panjang.

  • Generator mudah diimplementasikan karena mereka secara otomatis mengimplementasikan __iter __ (), __next __ () dan StopIteration yang jika tidak, perlu ditentukan secara eksplisit.



  • Memori disimpan saat item diproduksi sesuai kebutuhan, tidak seperti biasanya . Fakta ini menjadi sangat penting saat Anda perlu membuat iterator dalam jumlah besar. Ini juga dianggap sebagai keuntungan terbesar dari generator.

  • Dapat digunakan untuk menghasilkan item dalam jumlah tak terbatas.

  • Mereka juga dapat digunakan untuk menyalurkan sejumlah operasi

Fungsi Normal vs Fungsi Generator:

Generator dengan Python dibuat seperti cara Anda membuatnya menggunakan kata kunci 'def'. Tapi, fungsi Generator menggunakan kata kunci hasil alih-alih kembali. Ini dilakukan untuk memberi tahu penerjemah bahwa ini adalah iterator. Tidak hanya itu, fungsi Generator dijalankan ketika fungsi next () dipanggil dan bukan dengan namanya seperti pada fungsi normal. Pertimbangkan contoh berikut untuk memahaminya dengan lebih baik:

CONTOH:

def func (a): menghasilkan a a = [1,2,3] b = func (a) berikutnya (b)

KELUARAN: [1, 2, 3]

Seperti yang Anda lihat, pada keluaran di atas, func () menggunakan kata kunci hasil dan fungsi selanjutnya untuk eksekusinya. Tapi, untuk fungsi normal Anda membutuhkan potongan kode berikut:

CONTOH:

def func (a): mengembalikan a = [1,2,3] func (a)

KELUARAN: [1, 2, 3]

Jika Anda melihat contoh di atas, Anda mungkin bertanya-tanya mengapa menggunakan fungsi Generator ketika fungsi normal juga menghasilkan output yang sama. Jadi mari kita lanjutkan dan lihat cara menggunakan Generator dengan Python.

Menggunakan fungsi Generator:

Seperti yang disebutkan sebelumnya, Generator dengan Python menghasilkan iterable satu per satu. Lihat contoh berikut:

CONTOH:

apa itu browser sqlite
def myfunc (a): while a> = 3: menghasilkan a a = a + 1 b = myfunc (a) print (b) next (b)

Saat Anda menjalankan fungsi berikut, Anda akan melihat output berikut:

KELUARAN: 4

Di sini, satu objek iterable telah dikembalikan memenuhi kondisi while. Setelah eksekusi, kontrol ditransfer ke pemanggil. Jika diperlukan lebih banyak item, fungsi yang sama perlu dijalankan lagi dengan memanggil fungsi next ().

berikutnya (b)

KELUARAN: 5

Pada eksekusi lebih lanjut, fungsi tersebut akan mengembalikan 6,7, dll. Fungsi generator di Python mengimplementasikan metode __iter __ () dan __next __ () secara otomatis. Oleh karena itu, Anda dapat melakukan iterasi pada objek hanya dengan menggunakan metode next (). Ketika pembuatan item harus dihentikan, fungsi Generator mengimplementasikan StopIteration internal tanpa harus khawatir penelepon. Berikut adalah contoh lain dari ini:

CONTOH:

a = 2 def myfunc (a): sedangkan a> = 0: menghasilkan a - = 1 b = myfunc (a) print (b) next (b)

KELUARAN:

StopIteration-Generators dengan Python-EdurekaGambar di atas menunjukkan eksekusi program kami yang dibutuhkan beberapa kali. Jika Anda mencoba memanggil fungsi berikutnya lagi, ini mengembalikan pesan yang menggambarkan StopIteration telah dilaksanakan. Jika Anda mencoba melakukan ini dengan fungsi normal, nilai yang dikembalikan tidak akan berubah atau berulang. Lihat contoh di bawah ini:

CONTOH:

def z (): n = 1 hasil n n = n + 3 hasil n p = z () selanjutnya (p)

KELUARAN:

Generator dengan loop:

Jika Anda ingin menjalankan fungsi yang sama sekaligus, Anda dapat menggunakan loop 'for'. Loop ini membantu melakukan iterasi terhadap objek dan setelah semua implementasi menjalankan StopIteration.

CONTOH:

def z (): n = 1 hasil n n = n + 3 hasil n untuk x dalam z (): cetak (x)

KELUARAN:

satu
4

Anda juga dapat menentukan ekspresi untuk menghasilkan objek yang dapat diulang.

Ekspresi Generator:

Anda juga dapat menggunakan ekspresi bersama dengan perulangan for untuk menghasilkan iterator. Ini biasanya membuat pengulangan generasi menjadi lebih mudah. Ekspresi generator menyerupai pemahaman daftar dan sejenisnya fungsi lambda , ekspresi generator membuat fungsi generator anonim.

Lihat contoh di bawah ini:

CONTOH:

a = range (6) print ('List Comprehension', end = ':') b = [x + 2 untuk x dalam a] print (b) print ('Ekspresi generator', end = ': n') c = (x + 2 untuk x di a) cetak (c) untuk y di c: cetak (y)

KELUARAN:

Pemahaman Daftar: [2, 3, 4, 5, 6, 7]

Ekspresi generator:

2
3
4
5
6

Seperti yang Anda lihat, pada keluaran di atas, ekspresi pertama adalah pemahaman daftar yang ditentukan dalam tanda kurung []. Pemahaman daftar menghasilkan daftar lengkap item sekaligus. Berikutnya adalah ekspresi generator yang mengembalikan item yang sama tetapi satu per satu. Ini ditentukan menggunakan tanda kurung ().


Generatorfungsi dapat digunakan dalam fungsi lain juga.Sebagai contoh:

CONTOH:

a = range (6) print ('Ekspresi generator', end = ': n') c = (x + 2 untuk x dalam a) print (c) print (min (c))

KELUARAN:

Ekspresi generator
2

Program di atas mencetak nilai min ketika ekspresi di atas diterapkan pada nilai a.

Kasus Penggunaan:

Mari kita gunakan Generator di untuk:

  • Hasilkan Seri Fibonacci
  • Menghasilkan Angka

Menghasilkan Seri Fibonacci:

Deret Fibonacci seperti yang kita ketahui adalah deret angka dimana setiap angka merupakan penjumlahan dari dua angka sebelumnya. Dua angka pertama adalah 0 dan 1. Berikut adalah program generator untuk menghasilkan deret Fibonacci:

CONTOH:

def fibo (): pertama, kedua = 0,1 sedangkan True: menghasilkan pertama pertama, kedua = kedua, pertama + detik untuk x dalam fibo (): jika x> 50: putus cetak (x, akhir = '')

KELUARAN:

0 1 1 2 3 5 8 13 21 34

Keluaran di atas menunjukkan deret Fibonacci dengan nilai kurang dari 50. Sekarang mari kita lihat cara membuat daftar angka.

Menghasilkan Angka:

Jika Anda ingin membuat nomor daftar tertentu, Anda dapat melakukannya dengan menggunakan fungsi generator. Lihat contoh berikut:

CONTOH:

a = range (10) b = (x untuk x di a) print (b) untuk y di b: print (y)

KELUARAN:

array objek kelas java

0
satu
2
3
4
5
6
7
8
9

CONTOH:

a = rentang (2,10,2) b = (x untuk x dalam a) cetak (b) untuk y dalam b: cetak (y)

KELUARAN:


2
4
6
8

Program di atas mengembalikan angka genap dari 2 sampai 10. Ini membawa kita ke bagian akhir artikel ini tentang Generator dengan Python. Saya harap Anda memahami semua topik.

Pastikan Anda berlatih sebanyak mungkin dan mengembalikan pengalaman Anda.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar di blog 'Generator dengan Python' ini dan kami akan menghubungi Anda kembali secepatnya.

Untuk mendapatkan pengetahuan mendalam tentang Python beserta berbagai aplikasinya, Anda dapat mendaftar secara langsung dengan dukungan 24/7 dan akses seumur hidup.