Iterator Python
- Hal Sebelumnya Penerus Python
- Hal Berikutnya Lingkungan Variabel Python
Iterator Python
Iterator adalah objek yang mengandung bilangan yang dapat dihitung nilai.
Iterator adalah objek yang dapat dievaluasi, yang berarti Anda dapat mengelilinginya semua nilai.
Tekniknya, di Python, iterator adalah objek yang melaksanakan protokol iterator, yang mengandung metode __iter__()
dan __next__()
.
Iterator VS Objek yang Dapat Dievaluasi (Iterable)
daftar, tuple, kamus, dan koleksi adalah objek yang dapat dievaluasi. Mereka adalah wadah yang dapat dievaluasi, dari mana Anda dapat memperoleh iterator (Iterator).
Semua objek ini memiliki metode untuk mendapatkan iterator iter()
Metode:
Instansia
Mengembalikan iterator dari tuple dan mencetak setiap nilai:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
bahkan string juga adalah objek yang dapat dievaluasi dan dapat mengembalikan iterator:
Instansia
String juga adalah objek yang dapat dievaluasi, berisi sekumpulan karakter:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
Mengelilingi iterator
Kami juga dapat menggunakan perulangan for untuk mengelilingi objek yang dapat dievaluasi:
Instansia
Iterasi nilai tuple:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Instansia
Iterasi karakter dalam string:
mystr = "banana" for x in mystr: print(x)
Petunjuk:for perulangan sebenarnya membuat objek iterator dan melaksanakan setiap eksekusi perulangan next()
metode.
membuat iterator
Untuk membuat objek/kelas sebagai iterator, harus diimplementasikan objek __iter__()
dan __next__()
metode.
Seperti yang Anda pelajari di bab Klas/Objek Python, semua kelas memiliki nama __init__()
Fungsi, yang memungkinkan Anda melakukan beberapa inisialisasi saat membuat objek.
__iter__()
Fungsi metode ini mirip, Anda dapat melaksanakan operasi (inisialisasi dll), tetapi harus selalu mengembalikan objek iterasi sendiri.
__next__()
Metode ini juga memungkinkan Anda melaksanakan operasi, dan harus mengembalikan objek iterasi berikutnya di dalam urutan.
Instansia
Buat pengembalikan iterasi yang mengembalikan angka, dimulai dari 1, setiap urutan akan bertambah 1 (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))
StopIteration
jika Anda punya cukup next()
pernyataan, atau di dalam lingkaran for, contoh di atas akan berlanjut selamanya.
Untuk mencegah iterasi selamanya, kita dapat menggunakan StopIteration
pernyataan.
di __next__()
Dalam metode, jika iterasi selesai mencapai jumlah yang ditentukan, kita dapat menambahkan kondisi penghentian untuk memicu kesalahan:
Instansia
Berhenti setelah 20 iterasi:
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): jika self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) untuk x di myiter: print(x)
- Hal Sebelumnya Penerus Python
- Hal Berikutnya Lingkungan Variabel Python