Rumah > Artikel > pembangunan bahagian belakang > Apakah perbezaan antara Iterator dan "Lazy Iterator" dalam Python?
Dalam Python, iterator ialah objek yang membolehkan anda mengulangi jujukan nilai, seperti senarai atau tupel. Ia berfungsi dengan melaksanakan dua kaedah: __iter__() dan __next__(). Kaedah __iter__() mengembalikan objek iterator itu sendiri, manakala kaedah __next__() mengembalikan nilai seterusnya dalam jujukan. Apabila tiada lagi nilai untuk dikembalikan, ia menimbulkan pengecualian StopIteration.
class Squares: def __init__(self, n): self.n = n self.current = 0 def __iter__(self): return self def __next__(self): if self.current >= self.n: raise StopIteration else: result = self.current ** 2 self.current += 1 return result # Using the iterator squares = Squares(5) for square in squares: print(square)
Dalam Python, iter() ialah fungsi terbina dalam yang mengembalikan lelaran untuk objek boleh lelaran yang diberikan.
Objek boleh lelar ialah sebarang objek yang boleh diulang, seperti senarai, tuple, set, kamus atau objek tersuai yang mentakrifkan kaedah __iter__().
Apabila iter() dipanggil pada objek lelaran, ia mengembalikan objek lelaran yang menggunakan kaedah next() untuk menyediakan urutan nilai daripada objek lelaran satu demi satu.
Fungsi iter() sering digunakan dengan gelung dan iterator lain untuk melaksanakan tugas seperti menapis, memetakan dan mengurangkan unsur-unsur jujukan.
numbers = [1, 2, 3, 4, 5] iterator = iter(numbers) print(next(iterator)) # Output: 1 print(next(iterator)) # Output: 2 print(next(iterator)) # Output: 3
"peulang malas" ialah jenis peulang khas yang tidak menambah Menjana semua nilai dalam urutan. Sebaliknya, ia menjana mereka apabila diperlukan. Ini berguna apabila berurusan dengan urutan yang sangat besar atau tidak terhingga, kerana ia mengelakkan menjana semua nilai sekaligus dan memakan banyak memori.
Dalam Python, iterator malas sering dilaksanakan menggunakan fungsi penjana (Penjana ialah fungsi yang menggunakan kata kunci hasil ) yang mengembalikan satu nilai pada satu masa. Setiap kali nilai diminta, penjana mengambil tempat ia berhenti dan menghasilkan nilai seterusnya dalam jujukan.
rreeeeAtas ialah kandungan terperinci Apakah perbezaan antara Iterator dan "Lazy Iterator" dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!