Advertisement

Penggunaan Generator

 

 

Kamu tahu kan, saat ada tugas yang tampaknya tak ada habisnya, seperti menulis daftar panjang, mengumpulkan data, atau menghitung sesuatu yang terus bertambah? Terkadang kita merasa seperti robot pemrograman yang terjebak dalam loop tak berujung. Tapi tenang! Python punya alat keren yang bisa mengubahmu jadi superhero pemrograman dengan kemampuan super efisien—itulah generator!

Bayangkan generator itu seperti superpower di dunia Python, yang membantu kamu menghasilkan data dengan cara yang hemat memori, tanpa harus menyimpan semua data di dalam memori sekaligus. Jadi, kalau kamu suka efisiensi dan ingin menjadi pahlawan penghemat memori, generator adalah sahabat terbaikmu!

1. Apa Itu Generator?

Generator adalah sebuah fungsi di Python yang memungkinkan kamu menghasilkan data satu per satu, secara lazim (yaitu, satu elemen per waktu) alih-alih menghasilkan seluruh daftar sekaligus. Sederhananya, kamu bisa menghasilkan data dalam bentuk “aliran” tanpa membebani memori.

Misalnya, daripada membuat daftar dengan ribuan elemen yang memakan space memori besar, generator memungkinkan kamu untuk menghasilkan elemen satu per satu tanpa menunggu seluruh daftar siap.

2. Cara Membuat Generator dengan yield

Untuk membuat generator, kita gunakan yield. Ini adalah perintah sakti yang memberitahu Python untuk menghasilkan nilai tanpa harus mengembalikan seluruh daftar sekaligus. Bayangkan kamu seorang chef yang hanya memberi hidangan satu per satu, bukan memberi seluruh menu sekaligus.

Mari kita lihat contoh generator yang sederhana:

def hitung_angka():
    yield 1
    yield 2
    yield 3
    yield 4
    yield 5

generator = hitung_angka()

for angka in generator:
    print(angka)

Output:

1
2
3
4
5

Pada contoh di atas, fungsi hitung_angka() adalah generator yang menghasilkan angka satu per satu!

3. Mengapa yield Lebih Keren daripada return?

Tunggu dulu, kenapa sih yield itu lebih keren daripada return? Kamu bisa bilang return itu seperti "sudah selesai, selesai deh!". Tapi yield? "Gak selesai, bro! Aku masih punya lebih banyak data!"

Saat kamu menggunakan return, fungsi akan langsung berhenti setelah mengembalikan nilai. Tapi, ketika kamu menggunakan yield, fungsi akan terhenti sementara, dan bisa dilanjutkan lagi ketika dibutuhkan! Seperti tamu yang datang berkunjung ke rumah kamu dan berlanjut setelah mereka kembali lagi.

4. Generator yang Menghasilkan Data Berurutan

Misalnya, kamu ingin menghasilkan angka genap dalam rentang tertentu. Alih-alih membuat daftar seluruh angka dan memeriksa mana yang genap, kamu bisa menggunakan generator!

def angka_genap(max_num):
    angka = 2
    while angka <= max_num:
        yield angka
        angka += 2

genap = angka_genap(10)

for angka in genap:
    print(angka)

Output:

2
4
6
8
10

Taraaa! Dengan generator, kamu hanya menghasilkan angka genap satu per satu, tanpa harus menunggu seluruh daftar jadi. Kamu bisa bilang, "Aku hanya membutuhkan angka yang penting aja!"

5. Manfaat Generator: Hemat Memori!

Pernahkah kamu bekerja dengan data super besar yang membuat memori kamu penuh sesak?  Nah, dengan generator, kamu bisa menghemat memori karena generator hanya menghasilkan satu item pada suatu waktu, bukan seluruh daftar sekaligus. Seperti membaca satu halaman per waktu, bukan seluruh buku sekaligus!

Contoh: Kamu sedang menghitung miliar angka dan ingin memprosesnya tanpa menumpuk data. Coba gunakan generator untuk menghemat memori!

def hitung_besar(max_num):
    for angka in range(max_num):
        yield angka

# Membuat generator untuk 1 juta angka
besar_gen = hitung_besar(1000000)

# Hanya mengambil angka pertama saja
print(next(besar_gen))  # Mengambil angka pertama

Dengan generator, kamu bisa memproses data besar tanpa khawatir memori kamu penuh. Hemat memori dan tetap produktif!

6. Generator yang Menghasilkan Data Tak Terbatas

Bayangkan kamu memiliki aliran data tak terbatas, seperti sungai yang terus mengalir!  Dengan generator, kamu bisa membuat aliran data tak terbatas dengan cara yang cerdas! Misalnya, generator yang menghasilkan angka ganjil terus menerus:

def angka_ganjil():
    angka = 1
    while True:
        yield angka
        angka += 2

ganjil = angka_ganjil()

for i in range(10):
    print(next(ganjil))

Output:

1
3
5
7
9
11
13
15
17
19

Lihat itu! Dengan generator, kamu bisa menghasilkan angka ganjil tanpa batas—dan kamu bisa menghentikan aliran ini kapan saja dengan next(). Ini seperti air terjun data yang mengalir terus menerus!

7. Kesimpulan – Generator, Pahlawan Penghemat Memori

Jadi, apa yang kita pelajari hari ini? Generator itu adalah pahlawan tersembunyi Python yang dapat membantu kamu menghemat memori dan menghasilkan data satu per satu, tanpa perlu menunggu daftar besar penuh di memori! Jika kamu punya data besar atau bahkan data tak terbatas, generator adalah alat yang sangat efisien untuk menyelesaikan masalah tanpa membebani komputer.

Dengan yield, kamu bisa menghasilkan data tanpa khawatir akan kehabisan memori atau terjebak dalam loop tak berujung. Jadi, siap untuk mengubahmu menjadi pahlawan generator Python?

Dengan generator, kamu bisa jadi penguasa aliran data!


 

Post a Comment

0 Comments