Ana içeriğe atla

Python İteratorler

Python'da iteratorler, üzerinde gezinebileceğimiz verileri barındıran nesnelerdir. Yani iteratorler, bazı metotlar yardımıyla gezilebilen listelerdir diyebiliriz.

Yazıya başlamadan önce iterable ve iterator arasındaki farktan bahsedelim.(Bu arada, iterable ve iterator kelimeleri için tam Türkçe karşılık bulamadığım için tüm yazı boyunca bunları olduğu gibi kullanmaya devam edeceğim, bu yüzden mazur görün) Karakter dizileri,liste,demet,sözlük vs birer iterable iken, iterator ise bunlar üzerinde gezinme imkanı veren bir nesnedir. Yani iterable tipi belirtirken, iterator nesneyi belirtir. İterable nesneler üzerine iterasyon yapabiliriz. Bol iter'li yazı oldu, birazdan örneklerle beraber olayı daha iyi anlayacağımızı umuyorum.

Yukarıda da saydığım gibi, Python'da çoğu şey iterable'dir. Ve bunlar __iter__() isimli bir metot içerir. Görmek için şöyle bir şey yazabiliriz


Çıktıyı incelerseniz __iter__() metodunu görebilirsiniz. İşte bu metot, bize bir iterator nesnesi döndürür. Biz de bu nesneyi kullanarak listede gezinebiliriz. Python'da kullandığımız for döngüsü de önce iterable nesnenin __iter__() metodunu çalıştırır ve iterasyon nesnesini elde ettikten sonra bu nesne ile listede gezinti yapar, ta ki listenin sonuna kadar. Peki iterasyon nesnesiyle gezinti nasıl yapılır?

Tabiki de iterasyon nesnesinin __next__() metodunu kullanarak. İsterseniz bir örnek yapalım


Gördüğünüz gibi, __next__() metodu bize bir sonraki elemanı verir. Eğer listenin sonuna geldiğinizde hala kullanmaya çalışırsanız StopIteration hatası alacaksınız.

İterasyon nesnesini elde etmenin ve gezinmenin bir başka yolu daha var. iter() ve next() gömülü fonksiyonlarını kullanmak. Yukarıdaki örneği bir de şöyle yazalım


Eğer biz de kendimize ait bir iterable tip oluşturmak istersek, oluşturacağımız sınıfta __iter__ ve __next__ metodlarını override etmeliyiz. Basit bir örnek yapalım.


Yukarıdaki program, 20'e kadar olan çift sayıları ekrana yazar. for döngüsü, sınıfımızın __iter__ ve __next__ metodlarını çağırıp değerleri ekrana yazdıracaktır. Bir başka örnek daha yapalım ve konuyu bitirelim. Bu örnekte iterasyon ile kullanabileceğimiz bir Fibonacci sınıfı yazalım, ekrana ilk 10 fibonacci sayısını yazsın.


Bir başka yazıda buluşmak dileğiyle Allah'a emanet olun..

Yorumlar

Bu blogdaki popüler yayınlar

CLAHE (Contrast Limited Adaptive Histogram Equalization) Histogram Eşitleme Tekniği

Bu yazıda CLAHE algoritmasını nasıl uygulayacağımızı ve verilen bir resmi histogram eşitlemesi için nasıl işleyeceğimizi öğreneceğiz. Bu yazıda, CLAHE algoritmasının, görüntü iyileştirme için nasıl uygulandığını göreceğiz. CLAHE, görüntü kontrast değerlerinin aşırı yüksekliği ile ilgilenen AHE algoritmasının bir varyantıdır. CLAHE, bütün resim üzerinde işlem yapmak yerine kesitler olarak adlandırılan küçük bölgeler üzerinde işlem yapar. Küçük kesitlerde yapılan işlem sonrasında oluşan yapay sınırları kaldırmak için bilinear interpolasyon işlemi uygulanarak bu küçük kesitler birleştirilerek son görüntü elde edilir.  Bu algoritma görüntü kontrastını iyileştirmek için kullanılabilir. CLAHE algoritmasını renkli görüntülere de uygulayabiliriz. Genelde HSV görüntülerin yalnızca parlaklık kanalına uygulandığı durumlarda, tüm RGB kanallara uygulamaktan çok daha başarılı sonuçlar elde etmemizi sağlar.  CLAHE algoritması uygulanırken 2 parametre önemlidir. Birincisi clipLimit parametres...

Python Subprocess

subprocess modülü, yeni bir process oluşturmayı sağlayan, bunların girdi-çıktılarını ele alma imkânı veren ve dönüş kodlarını almayı sağlayan bir modüldür. Yani daha basit bir şekilde, program içinde program çalıştırmaya imkan veren bir modüldür. Subprocess Modülünün Kullanımı subprocess basit bazı process'leri kullanmak için birkaç tane fonksiyon sunuyor. Daha karmaşık bir process çalıştırmak isterseniz, Popen sınıfını kullanabilirsiniz. Bunlara detaylı bir şekilde değinmeye çalışacağız. Şimdi basit fonksiyonları inceleyelim

Python Soket Programlama

Merhaba arkadaşlar. Bugün sizlerle birlikte Python'da socket programlama yapacağız. Bunun için Python da socket kütüphanesini kullanacağız. Peki nedir bu socket programlama? Soket programlama, sizin iki program arası yada iki bilgisayar arası iletişim kurmanızı sağlar. İşte bizde bugün iki programımızı birbiri ile haberleştireceğiz. Bunun için elimizde iki program olacak. Birinci program,mesaj bekleyen program olacak, diğeri ise mesaj gönderen program.