Python iter () işlevi, verilen nesne için bir yineleyici döndürür.
iter()
Fonksiyonu aynı zamanda bir eleman yinelenebilen bir nesne oluşturur.
Bu nesneler, for loop, while döngüsü gibi döngülerle birleştirildiğinde kullanışlıdır.
iter()
İşlevin sözdizimi şöyledir:
iter (nesne, gözcü)
iter () Parametreler
iter()
İşlevi, iki parametre alır:
- nesne - yineleyicinin oluşturulması gereken nesne (setler, tuple'lar vb.
- sentinel (isteğe bağlı) - bir dizinin sonunu temsil etmek için kullanılan özel değer
İter () değerinden dönüş değeri
iter()
İşlev, bir nesne için bir yineleyici nesnesini geri gönderir.- Kullanıcı tanımlı nesne uygulamak etmezse
__iter__()
ve__next__()
ya__getitem()__
,TypeError
istisna yükseltilir. - Sentinel parametresi de sağlanırsa,
iter()
sentinel karakter bulunmayana kadar bir yineleyici döndürür.
Örnek 1: Python iter () ile çalışma
# list of vowels vowels = ('a', 'e', 'i', 'o', 'u') vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'
Çıktı
Aeiou
Örnek 2: özel nesneler için iter ()
class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num>= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # raises StopIteration print(next(print_num_iter))
Çıktı
1 2 3 Traceback (en son çağrı son): Dosya "", satır 23, Dosya "", satır 11, __next__ StopIteration
Örnek 3: sentinel parametresiyle iter ()
class DoubleIt: def __init__(self): self.start = 1 def __iter__(self): return self def __next__(self): self.start *= 2 return self.start __call__ = __next__ my_iter = iter(DoubleIt(), 16) for x in my_iter: print(x)
Çıktı
2 4 8
Burada, koşulsuz özel bir yinelenebilir nesne uyguladık StopIteration
.
Ancak yinelemeyi durdurmak için parametre iter()
ile birlikte yöntemi kullanabiliriz sentinel
. Döndürülen değeri ise __next__()
değerine eşit sentinel
, StopIteration
yükseltilmiş olacaktır, aksi takdirde, değer iade edilir.
Önerilen Kaynaklar: Python Yineleyicileri