3 Mart 2014 Pazartesi

Lambda Fonksiyonları

Kod tekrarından kaçınmak için fonksiyonları kullanıyoruz. Fonksiyon yazmak hem bizim kod yazarken aynı kodları tekrar tekrar yazmaktan kurtarır hemde kodun okunaklı olmasını sağlar. Bugüne kadar fonksiyon tanımlarken def ifadesini kullandık. Küçük bir fonksiyon tanımlayalım.
>>> def kare(x):
...     return x*x
Aldığı sayının karesini hesaplayan bir fonksiyon tanımladık. Lambda fonksiyonları ise fonksiyon tanımlamayı tek satırda yapmamızı sağlar. Şimdi aynı fonksiyonu lambda ifadesini kullanarak yazalım.
>>> lambdaFonksiyonu = lambda x:x*x
>>> lambdaFonksiyonu(5)
25
Lambda fonksiyonları işi bu şekilde kolaylaştırıyorlar. Kullanımı;
lambda degişkenler:dönüş değeri
Bu şekilde basit fonksiyonları lambda ile yazarak işleri daha çabuk halledebiliriz. Şimdi birkaç örnek verelim. İki sayının bölümünden kalanı veren fonksiyon;
##def ifadesi ile
>>> def kalan(bolunen,bolen):
...     return bolunen % bolen
##lambda ifadesi ile
>>> kalan = lambda bolunen,bolen:bolunen % bolen
>>> kalan(30,4)
2
map(),filter(),reduce() Fonksiyonları ile Kullanımı
Bu fonksiyonlardan map(),filter(),reduce() Fonksiyonları yazısında bahsedilmişti. Lambda fonksiyonları en etkili bu fonksiyonlar ile kullanılır. Şimdi bu yazıda yazılan fonksiyonları lambda fonksiyonu haline dönüştürdüğümüzde ne demek istediğimizi anlayacaksınız.
map() Fonksiyonu ile Kullanımı
#Verilen listedeki her elemanın karesini alma
>>> sayilar = range(1,10)
>>> map(lambda x:x*x,sayilar)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
Satır sayısı bir hayli azaldı değil mi?
##listedeki elemanları küçültme
kelimeler = ['Python','Django','PyQt','PyGame']
>>> map(lambda kelime:kelime.lower(),kelimeler)
['python', 'django', 'pyqt', 'pygame']
filter() Fonksiyonu ile Kullanımı
##Liste elemanlarından tek sayıları belirleme
>>> sayilar = range(1,10)
>>> filter(lambda x:x%2==1,sayilar)
[1, 3, 5, 7, 9]
>>> kelimeler = ['Python Dersleri','python','Django','pyqt','Pygame']
>>> filter(lambda kelime:kelime.istitle(),kelimeler)
['Python Dersleri', 'Django', 'Pygame']
reduce() Fonksiyonu ile Kullanımı
##faktoriyel alma
>>> sayilar = range(1,11)
>>> reduce(lambda sayi1,sayi2:sayi1*sayi2,sayilar)
3628800
##10'a kadar olan sayıları toplama
>>> sayilar = range(0,10)
>>> reduce(lambda sayi1,sayi2:sayi1+sayi2,sayilar)
45
##Liste elemanlarını birleştirme
>>> metinler = [u"pythondersleri.com",u"python",u"teknolojileri",u"hakkinda",u"egitim",u"verir"]
>>> reduce(lambda metin1,metin2:str(metin1)+" "+str(metin2),metinler)
'pythondersleri.com python teknolojileri hakkinda egitim verir'
Kaynakça

0 yorum :

Yorum Gönderme