Iterator Python
Iterator adalah objek yang berisi jumlah nilai yang dapat dihitung.
Iterator adalah objek yang dapat diulangi, artinya Anda dapat melintasi semua nilai.
Secara
teknis, dalam Python, sebuah iterator adalah objek yang mengimplementasikan
protokol iterator, yang terdiri dari metode __iter__() dan __next__().
Iterator vs Iterable
Daftar, tupel, kamus, dan set adalah semua objek yang dapat diubah. Ini adalah wadah yang dapat Anda gunakan untuk mendapatkan iterator.
Semua objek
ini memiliki iter()metode
yang digunakan untuk mendapatkan iterator:
Contoh
Kembalikan iterator dari tuple, dan cetak setiap nilai:
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
Bahkan string adalah objek yang dapat diubah, dan dapat mengembalikan iterator:
Contoh
String juga merupakan objek yang dapat diubah, yang berisi urutan karakter:
myit = iter(mystr)
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
Looping Melalui Iterator
Kita juga
bisa menggunakan forloop
untuk beralih melalui objek yang dapat diulang:
Contoh
Iterasi nilai-nilai tuple:
mytuple = ("apple", "banana", "cherry")
for x in mytuple:
print(x)
Contoh
Iterasi karakter string:
mystr = "banana"
for x in mystr:
print(x)
Loop for
benar-benar menciptakan sebuah objek iterator dan mengeksekusi metode () berikutnya untuk setiap loop.
Membuat Iterator
Untuk membuat
objek / kelas sebagai iterator, kamu harus mengimplementasikan
metode __iter__() dan objek
__next__() kamu.
semua kelas
memiliki fungsi yang disebut __init__(), yang memungkinkan kamu melakukan inisialisasi ketika
objek sedang dibuat.
Metode __iter__()
bertindak serupa, kamu dapat
melakukan operasi (menginisialisasi dll), tetapi harus selalu kembali objek
iterator sendiri.
Metode __next__() ini juga
memungkinkan kamu untuk
melakukan operasi, dan harus kembali item berikutnya dalam urutan.
Contoh
Membuat iterator yang mengembalikan angka, dimulai dengan 1, dan setiap urutan akan bertambah satu (mengembalikan 1,2,3,4,5 dll.):
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
Stop Iteration
Contoh di
atas akan berlanjut selamanya jika kamu
memiliki cukup banyak pernyataan () berikutnya, atau jika itu digunakan dalam
satu lingkaran for
Untuk
mencegah iterasi berjalan selamanya, kita dapat menggunakan pernyataan StopI teration itu.
Dalam metode
__next__()
ini, kita dapat menambahkan kondisi terminating untuk meningkatkan kesalahan
jika iterasi dilakukan beberapa kali:
Contoh
Menghentikan setelah 20 iterasi:
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)