Home » python » Python Iterator: Code dan Cara Membuatnya

Python Iterator: Code dan Cara Membuatnya

by Catur Kurnia Sari
by Catur Kurnia Sari

Iterator adalah objek yang berisi sejumlah nilai yang dapat dihitung.

Iterator adalah objek yang dapat diiterasi, artinya dapat melintasi semua nilai.

Secara teknis, dalam Python, iterator adalah objek yang mengimplementasikan protokol iterator, yang terdiri dari metode iter() dan next().

Iterator vs Iterable

List, tupel, kamus, dan set adalah objek yang dapat diulang (iterable). Mereka adalah wadah yang dapat diulang dan mendapatkan iterator.

Semua objek ini memiliki metode iter() yang digunakan untuk mendapatkan iterator.

Contoh:
Kembalikan iterator dari tupel, dan cetak setiap nilai

mytuple = ("apel", "pisang", "ceri")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))

Bahkan string adalah objek yang dapat diulang, dan dapat mengembalikan sebuah iterator.

Contoh:
String juga merupakan objek yang dapat diulang, berisi urutan karakter

mystr = "pisang"
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 jenil loop for untuk melakukan iterasi melalui objek iterable.

Contoh:
Iterasi nilai tupel

mytuple = ("apel", "pisang", "ceri")

for x in mytuple:
  print(x)

Contoh:
Iterasi karakter string

mystr = "pisang"

for x in mystr:
  print(x)

Perulangan (loop) for sebenarnya membuat objek iterator dan menjalankan metode next() untuk setiap pengulangan.

Membuat Iterator

Untuk membuat objek / kelas sebagai iterator kita harus mengimplementasikan metode iter() dan next() ke dalam objek.

Seperti yang telah dipelajari pada bab Kelas / Objek Python, semua kelas memiliki fungsi yang disebut init(), yang memungkinkan untuk melakukan beberapa inisialisasi saat objek dibuat.

Metode iter() bertindak serupa, kita dapat melakukan operasi (menginisialisasi, dll.), Tetapi harus selalu mengembalikan objek iterator itu sendiri.

Metode next() juga memungkinkan untuk melakukan operasi, dan harus mengembalikan item berikutnya dalam urutan.

Contoh:
Buat iterator yang mengembalikan angka, dimulai dengan 1, dan setiap urutan akan bertambah satu (menghasilkan 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))

StopIteration

Contoh di atas akan berlanjut seterusnya jika cukup dengan memiliki pernyataan next(), atau jika digunakan dalam perulangan for.

Untuk mencegah iterasi berlangsung selamanya, kita dapat menggunakan pernyataan StopIteration.

Dalam metode next(), kita dapat menambahkan kondisi penghentian untuk memunculkan errorjika iterasi dilakukan beberapa kali.

Contoh:
Berhenti 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)

You may also like