Cara Membangun Iterator
Dasar di Python
Di Python, iterator adalah alat yang kuat yang memungkinkan Anda menjelajahi sekumpulan nilai tanpa perlu bekerja langsung dengan struktur data yang mendasarinya. Baik Anda berurusan dengan daftar, himpunan, atau bahkan objek kustom, memahami cara membuat iterator Anda sendiri bisa sangat menguntungkan.
Dalam postingan blog ini, kita akan membahas cara membangun iterator dasar menggunakan sebuah kelas contoh yang disebut Example
, dan kemudian kita akan menjelajahi implementasi yang lebih sederhana menggunakan generator.
Apa Itu Iterator?
Iterator adalah objek yang sesuai dengan protokol iterator. Ini berarti ia harus menyediakan dua metode penting:
__iter__()
: Metode ini mengembalikan objek iterator itu sendiri.__next__()
: Metode ini mengembalikan nilai berikutnya dari koleksi. Ketika tidak ada lagi item yang dapat dikembalikan, ia akan mengangkat pengecualianStopIteration
.
Metode ini memfasilitasi iterasi melalui elemen dalam sebuah loop.
Membuat Iterator Dasar
Mari kita jelaskan bagaimana cara membuat iterator langkah demi langkah.
Langkah 1: Definisikan Kelas
Kita akan mulai dengan mendefinisikan sebuah kelas yang disebut Example
. Kelas ini akan mengambil daftar nilai dan mengeksposnya melalui iterator.
class Example:
def __init__(self, values):
self.values = values
Langkah 2: Implementasikan Metode Iterator
Sekarang, kita akan mengimplementasikan metode __iter__
dan __next__
dalam kelas Example
.
class Example:
def __init__(self, values):
self.values = values
def __iter__(self):
self.index = 0 # Inisialisasi indeks
return self
def __next__(self):
if self.index < len(self.values):
result = self.values[self.index]
self.index += 1 # Pindah ke indeks berikutnya
return result
else:
raise StopIteration # Tidak ada lagi nilai yang dapat dikembalikan
Langkah 3: Gunakan Iterator
Sekarang Anda dapat membuat instansi dari Example
dan mengiterasi nilainya seperti ini:
e = Example([1, 2, 3])
for value in e:
print("Objek contoh berisi", value)
Kode ini akan menghasilkan output:
Objek contoh berisi 1
Objek contoh berisi 2
Objek contoh berisi 3
Membangun Iterator Counter
Untuk lebih menggambarkan konsep tersebut, mari kita buat iterator Counter
sederhana yang menghitung dari nomor rendah tertentu hingga nomor tinggi tertentu.
Kelas Counter
Berikut adalah cara Anda dapat membangun iterator Counter
:
class Counter:
def __init__(self, low, high):
self.current = low - 1
self.high = high
def __iter__(self):
return self
def __next__(self):
self.current += 1
if self.current < self.high:
return self.current
raise StopIteration
Menggunakan Counter
Anda dapat menggunakan kelas Counter
seperti ini:
for c in Counter(3, 9):
print(c)
Ini akan mencetak:
3
4
5
6
7
8
Pendekatan Alternatif: Menggunakan Generator
Sementara kelas iterator di atas berguna, menerapkan generator dapat jauh lebih sederhana. Generator secara otomatis menangani status dan protokol iterasi untuk Anda.
Berikut adalah cara Anda dapat membuat counter sebagai generator:
def counter(low, high):
current = low
while current < high:
yield current
current += 1
for c in counter(3, 9):
print(c)
Outputnya tetap sama, tetapi pendekatan generator membuat kode Anda lebih bersih dan lebih mudah untuk dipelihara.
Kesimpulan
Membuat iterator di Python memungkinkan Anda untuk mendefinisikan perilaku looping Anda sendiri dan memanipulasi bagaimana objek mengekspos nilainya. Dengan mengimplementasikan metode __iter__()
dan __next__()
, Anda dapat memberikan pengalaman iterasi yang kustom. Selain itu, menggunakan generator menyederhanakan proses, menghemat waktu, dan mengurangi kompleksitas.
Untuk bacaan lebih lanjut tentang topik ini, pertimbangkan untuk memeriksa artikel David Mertz tentang Iterator dan Generator Sederhana.
Sekarang setelah Anda memiliki pemahaman dasar tentang cara membuat iterator di Python, Anda dapat mulai menerapkan konsep-konsep ini dalam proyek Anda sendiri!