Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah perbezaan antara Iterator dan "Lazy Iterator" dalam Python?

Apakah perbezaan antara Iterator dan "Lazy Iterator" dalam Python?

王林
王林ke hadapan
2023-05-09 18:40:161300semak imbas

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.

Iterator tersuai standard:

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.

Peulang yang dicipta dengan fungsi iter():

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:

"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.

rreeee

Atas 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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam