Iterator di Python
Artikel ini menjelaskan tentang iterator di Python.
YouTube Video
Iterator di Python
Gambaran Umum
Di Python, iterator adalah mekanisme dasar untuk memproses elemen dari koleksi seperti list, tuple, dan dictionary satu per satu.
Apa itu Iterator?
Iterator adalah objek yang dapat mengembalikan elemen satu per satu. Di Python, sebuah objek dianggap sebagai iterator jika memenuhi dua syarat berikut:.
- Memiliki metode
__iter__()
yang mengembalikan dirinya sendiri. - Memiliki metode
__next__()
yang mengembalikan elemen berikutnya. Akan menghasilkanStopIteration
ketika tidak ada elemen lagi.
1iterator = iter([1, 2, 3])
2print(next(iterator)) # 1
3print(next(iterator)) # 2
4print(next(iterator)) # 3
5# print(next(iterator)) # StopIteration occurs
- Dalam kode ini, fungsi
iter()
digunakan untuk mengubah daftar menjadi iterator, dan fungsinext()
digunakan untuk mengambil dan menampilkan setiap elemen satu per satu.
Perbedaan dengan Iterable
Iterable adalah objek yang mengimplementasikan metode __iter__()
dan dapat digunakan dalam loop for
. List dan tuple adalah contoh iterable.
1nums = [10, 20, 30]
2it = iter(nums) # Get an iterator from the iterable
3print(next(it)) # 10
- Kode ini merupakan contoh mendapatkan iterator dari iterable seperti daftar dan mengambil elemennya secara berurutan dengan menggunakan
next()
.
Cara memeriksa:
1from collections.abc import Iterable, Iterator
2
3nums = [10, 20, 30]
4it = iter(nums)
5
6print(isinstance(nums, Iterable)) # True
7print(isinstance(nums, Iterator)) # False
8print(isinstance(it, Iterator)) # True
- Kode ini memastikan bahwa
nums
adalah iterable tetapi bukan iterator, sedangkanit
, yang diperoleh dengan menggunakaniter(nums)
, adalah sebuah iterator.
Hubungan antara Loop for dan Iterator
Loop for
di Python secara internal bekerja sebagai berikut:.
1nums = [1, 2, 3]
2iterator = iter(nums)
3while True:
4 try:
5 value = next(iterator)
6 print(value)
7 except StopIteration:
8 break
- Seperti yang terlihat, loop
for
secara implisit menggunakan iterator untuk melakukan iterasi.
Membuat Iterator Kustom
Anda dapat membuat iterator kustom menggunakan kelas.
1class Countdown:
2 def __init__(self, start):
3 self.current = start
4
5 def __iter__(self):
6 return self
7
8 def __next__(self):
9 if self.current <= 0:
10 raise StopIteration
11 value = self.current
12 self.current -= 1
13 return value
14
15for num in Countdown(3):
16 print(num) # 3, 2, 1
- Kode ini mendefinisikan iterator kustom yang menghitung mundur menggunakan kelas
Countdown
dan mencetak angka dari 3 sampai 1 menggunakan loopfor
.
Perbedaan antara Iterator dan Generator, serta Kapan Menggunakan Masing-Masing
Generator menyediakan fungsi yang mirip dengan iterator. Generator memungkinkan Anda membuat iterator dengan cara yang lebih ringkas.
1def countdown(n):
2 while n > 0:
3 yield n
4 n -= 1
5
6for i in countdown(3):
7 print(i) # 3, 2, 1
- Kode ini mendefinisikan fungsi generator yang menghitung mundur menggunakan
yield
, dan mencetak angka dari 3 sampai 1 menggunakan loopfor
.
Perbedaan antara Iterator (Kelas) dan Generator (Fungsi)
Terdapat perbedaan berikut antara iterator (kelas) dan generator (fungsi):.
Fitur | Iterator (kelas) | Generator (fungsi) |
---|---|---|
Definisi | __iter__() + __next__() |
Fungsi menggunakan yield |
Manajemen Status | Penanganan atribut secara manual diperlukan | Status dikelola secara otomatis |
Keterbacaan | Dapat menjadi kompleks | Sederhana dan jelas |
-
Perbedaan Cara Mendefinisikannya Iterator didefinisikan dengan menulis secara manual dua metode:
__iter__()
dan__next__()
. Sebaliknya, generator hanyalah sebuah fungsi yang menggunakan kata kunciyield
, sehingga kode menjadi lebih sederhana. -
Perbedaan dalam Manajemen Status Dengan iterator, Anda harus mengelola status dan kemajuan saat ini secara manual menggunakan variabel. Namun, generator secara otomatis menyimpan statusnya secara internal di Python, sehingga tidak perlu dikelola secara manual.
-
Keterbacaan Kode Iterator cenderung menjadi kompleks karena memerlukan beberapa metode dan manajemen status secara manual. Sebaliknya, generator menggunakan sintaks yang sederhana sehingga mudah dipahami bahkan oleh pemula.
Pustaka Standar untuk Menggunakan Iterator: itertools
itertools
, pustaka standar Python, menyediakan alat yang kuat untuk bekerja dengan iterator.
1import itertools
2
3for x in itertools.count(10, 2): # 10, 12, 14, ...
4 if x > 20:
5 break
6 print(x)
- Pustaka ini juga mencakup banyak fungsi lain seperti
cycle
,repeat
,chain
,islice
, dantee
.
Contoh Penggunaan Iterator
Kasus penggunaan iterator meliputi hal-hal berikut:.
- Memproses Baris File: Membaca baris satu per satu dari sebuah file sebagai sebuah iterator.
- Pemrosesan Efisien Memori: Memproses data dalam jumlah besar secara berurutan.
- Mewakili Urutan Tak Hingga: Gunakan fungsi seperti
itertools.count()
.
Ringkasan
- Iterator adalah objek yang dapat mengambil nilai berikutnya secara berurutan.
- Anda dapat membuat iterator kustom dengan mendefinisikan
__iter__()
dan__next__()
. - Iterator akan diproses secara otomatis melalui loop
for
atau fungsinext()
. - Menggunakan generator atau
itertools
memungkinkan pemrosesan yang lebih efisien.
Dengan menggunakan iterator, Anda dapat memproses data dalam jumlah besar secara berurutan dengan efisiensi memori, memungkinkan pengelolaan status yang terkontrol dan kinerja program yang lebih baik.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.