Python 迭代器
- Önceki Sayfa Python Miras
- Sonraki Sayfa Python Alan
Python 迭代器
迭代器 bir nesnedir ve değerlerin sayısını tutar.
迭代器 dolaşabilir nesnelerdir, bu da tüm değerleri dolaşabileceğiniz anlamına gelir.
Teknik olarak, Python'da, dolaşıcı protokolünü gerçekleştiren nesnelerdir, bu nesneler __iter__()
ve __next__()
.
迭代器 VS 可迭代的 nesne (Iterable)
listeler, dizgeler, sözlükler ve kümeler dolaşabilir nesnelerdir. Bu dolaşabilir konteynerler, dolaşıcılar (Iterator) alabilirsiniz.
Bütün bu nesneler, dolaşıcıları almak için iter()
Yöntem:
Örnek
Dizgeden bir dolaşıcı döndür ve her değeri yazdırın:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
Hatta dizge de dolaşabilir nesnelerdir ve dolaşıcı döndürebilir:
Örnek
Dizge de dolaşabilir nesnelerdir ve karakter dizisini içerir:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
迭代器 dolaşma
Ayrıca, for döngüsünü kullanarak dolaşabiliriz:
Örnek
Dizge değerlerini dolaşma:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Örnek
Dizge içindeki karakterleri dolaşma:
mystr = "banana" for x in mystr: print(x)
İpucu:for döngüsü, bir迭代器 nesnesi oluşturur ve her döngüde next()
adında bir yöntem içerir.
迭代器 oluşturma
Nesne/sınıfı bir迭代器 olarak oluşturmak için nesneye __iter__()
ve __next__()
adında bir yöntem içerir.
Python sınıf/nesne bölümünde öğrendiğiniz gibi, tüm sınıflar adı __init__()
Objeyi oluştururken bazı başlangıç ayarlarını yapmanıza izin veren bir fonksiyon.
__iter__()
Metodun etkisi benzerdir, işlemleri (init gibi) gerçekleştirebilirsiniz, ancak her zaman迭代器 nesnesini döndürmek zorundasınız.
__next__()
Metod, aynı zamanda işlemleri de gerçekleştirmenizi sağlar ve dizideki bir sonraki projeyi döndürmek zorundadır.
Örnek
Sayıları döndüren bir迭代器 oluşturun, 1'den başlar ve her dizi 1 artar (1, 2, 3, 4, 5 vb. döndürür):
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
yeterli next()
ifadesini kullanabiliriz veya for döngüsünde kullanarak, yukarıdaki örnek sonsuza kadar devam edecektir.
Döngü sonsuza kadar devam etmesini önlemek için StopIteration
ifadesi.
if __next__()
Metod içinde, döngü belirli bir sayıda tamamlanırsa, bir sonlandırma koşulu ekleyebiliriz ve hata tetikleyebiliriz:
Örnek
20 tane döngü sonunda durma:
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)
- Önceki Sayfa Python Miras
- Sonraki Sayfa Python Alan