Python ile Lambda İfadeleri
Bu yazıda Python ile lambda ifadelerini (expression) öğrenmeye çalışacağız. lambda ifadeleri fonksiyonlarımızı oluşturmak için bulunan pratik bir yöntemdir. Gerektiği yerde bu ifadeleri kullanabiliriz. Biliyorsunuz listelerimizi oluşturmak için List Comprehension yöntemini kullanıyorduk. İsterseniz önce list comprehension yöntemini hatırlayalım.
Küçük fonksiyonlar için bu ifadeyi kullanmak akıllıca olabilir.
liste1=[1,2,3,4,5]
liste2=list()
for i in liste1: # klasik liste oluşturma yöntemi
liste2.append(i*2)
print(liste2)
"""
Çıktı:
[2, 4, 6, 8, 10]
"""
liste3=[1,2,3,4,5]
liste4=[i*2 for i in liste3] # List Comprehension
print(liste4)
"""
Çıktı:
[2, 4, 6, 8, 10]
"""
Aynı buradaki gibi bir fonksiyon da tek satır halinde lambda ifadeleri ile oluşturabiliriz. İlk önce yapısına bakalım sonra örneklerimize geçelim.
etiket = lambda parametre1, parametre2,….. : işlem
Bu yapıdan henüz bir şey anlamamış olabiliriz. İsterseniz örneklerimizle lambda ifadelerini anlamaya çalışalım. Bir tane 2 ile çarpma görevini yerine getiren fonksiyon yazalım.
# Önce klasik fonksiyon tanımlayalım.
def ikiyleCarp(x):
return x*2
print(ikiyleCarp(3))
"""
Çıktı:
6
"""
Yukarıdaki fonksiyonun aynısını lambda ile tek satırda tanımlayalım
ikiyleCarp = lambda x : x * 2 # Yukarıdaki fonksiyonun aynısını lambda ile tek satırda tanımlamış olduk.
print(ikiyleCarp(3))
"""
Çıktı:
6
"""
Başka bir örnek
def toplama(x,y,z):
return x + y +z
print(toplama(10,11,12))
"""
Çıktı:
33
"""
# Yukardaki fonksiyonu tek satırda lambda ile tanımlayalım:
toplama=lambda x,y,z : x + y + z
print(toplama(3, 4, 5))
"""
Çıktı:
12
"""
Yazmış olduğumuz string ifadeyi ters çeviren fonksiyon tanımlayalım.
def tersCevir(s):
return s[::-1]
print(tersCevir("Serdar Kurt"))
"""
Çıktı:
truK radreS
"""
# Yukardaki fonksiyonu tek satırda lambda ile tanımlayalım:
tersCevir=lambda s : s[::-1]
print(tersCevir("Serdar Kurt"))
"""
Çıktı:
truK radreS
"""
Son bir örnek olarak çift mi tek mi fonksiyonu yazalım.
def ciftTek(sayi):
return sayi%2==0
print(ciftTek(14))
print(ciftTek(13))
"""
Çıktı:
True
False
"""
# Lambda ile yazalım.
ciftTek = lambda sayi : sayi%2==0
print(ciftTek(14))
print(ciftTek(13))
"""
Çıktı:
True
False
"""