Ekspresi Generator
Pelajaran 9 dari 13 dalam kursus Iterator Python di Coddy.
Ekspresi generator adalah cara ringkas untuk membuat iterator di Python. Ekspresi ini menjadi alternatif yang lebih hemat memori daripada list comprehension, terutama saat menangani dataset besar atau urutan tak terbatas.
Sintaks Ekspresi Generator
Ekspresi generator menggunakan sintaks yang mirip dengan list comprehension, tetapi memakai tanda kurung, bukan tanda kurung siku:
(expression for item in iterable if condition)Fitur Utama
- Evaluasi Tertunda: Ekspresi generator menghasilkan item satu per satu dan hanya saat diminta, sehingga menghemat memori.
- Iterator Sekali Pakai: Setelah habis, iterator ini tidak dapat digunakan kembali tanpa membuat ulang generator.
- Sintaks Ringkas: Ekspresi ini menawarkan cara ringkas untuk mendefinisikan fungsi generator sederhana.
Contoh Penggunaan
Berikut contoh sederhana ekspresi generator yang menghasilkan bilangan kuadrat:
squares = (x**2 for x in range(5))
for square in squares:
print(square) # Output: 0, 1, 4, 9, 16
Perbandingan dengan List Comprehension
Meskipun sintaksnya mirip, ekspresi generator berbeda dari list comprehension dalam penggunaan memori:
# List comprehension (membuat list lengkap di memori)
squares_list = [x**2 for x in range(1000000)]
# Ekspresi generator (membuat object generator)
squares_gen = (x**2 for x in range(1000000))
Ekspresi generator lebih hemat memori karena tidak membuat semua nilai sekaligus.
Kegunaan
Ekspresi generator sangat berguna saat:
- Bekerja dengan dataset besar
- Memproses aliran data
- Membuat pipeline data
Dengan menggunakan ekspresi generator, kamu dapat membuat iterator yang efisien dan hemat memori untuk berbagai tugas pemrosesan data di Python.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Tantangan
MudahBuat ekspresi generator yang memfilter dan mengubah urutan angka. Generator tersebut harus menghasilkan kuadrat dari angka genap dalam rentang yang diberikan.
Kamu diberikan hal berikut:
- Dua bilangan bulat sebagai input:
startdanend(inklusif)
Tugasmu:
- Buat ekspresi generator yang:
- Melakukan iterasi melalui rentang dari
starthinggaend(inklusif) - Menyaring angka ganjil
- Menghitung kuadrat dari angka genap yang tersisa
- Melakukan iterasi melalui rentang dari
- Gunakan ekspresi generator dalam perulangan untuk mencetak setiap nilai hasil pada baris baru
Input akan diberikan sebagai dua bilangan bulat yang dipisahkan oleh spasi, yang mewakili start dan end.
Coba sendiri
# Baca input
start, end = map(int, input().split())
# TODO: Buat ekspresi generator-mu di sini
generator_exp = None # Ganti None dengan ekspresi generator-mu
# Cetak hasilnya
for value in generator_exp:
print(value)Semua pelajaran di Iterator Python
2Membuat Iterator Kustom
Mengimplementasikan __iter__()Mengimplementasikan __next__()Iterator Tak TerbatasLatihan sendiri: Compiler Python online