Bu yazımızda Python Lambda hakkında bilgi edinmeye çalışacağız.
Tanım
Lambda, isimsiz tanımlanmış bir fonksiyondur. Bu, birden fazla argüman alabilir, ancak değerlendirilen ve döndürülen yalnızca bir ifadeye izin verilir. İşlev nesnelerinin gerekli olduğu yerlerde lambda işlevini kullanabiliriz.
Sözdizimi:
lambda argümanları: ifade
Örnek 1: Aşağıdaki fonksiyon bir sayının küpünü hesaplamak için kullanılır.
def küp(a):a*a*a döndür
yazdır(küp(3))
Yukarıdaki fonksiyon, aşağıda gösterildiği gibi lambda kullanılarak yazılabilir:
p = lambda x : x*x*xyazdır(p(3))
Örnek 2: Aşağıdaki fonksiyon iki sayının toplamını hesaplamak için kullanılır.
tanım toplamı_2(x,y):x + y'yi döndür
yazdır(toplam_2(10,20))
Yukarıdaki fonksiyon, aşağıda gösterildiği gibi lambda kullanılarak yazılabilir:
p = lambda x,y : x + yyazdır(p(10,20))
Örnek 3: Aşağıdaki lambda örneği birden fazla argüman alır.
p = lambda x, y, z : x + y + zyazdır(p(10, 5, 3))
Örnek 4: Bu fonksiyon sayıyı 2 ile çarpar ve Lambda fonksiyonu kullanılarak aşağıdaki gibi yazılabilir:
def işlev(n):dönüş lambda x : x * n
multiple_by_2 = işlev(2)
print(multiply_by_2(11))
print(multiply_by_2(15))
Örnek 5: İşlev, işlevi bir argüman olarak alır ve sonucu döndürür.
function_argument = lambda p, f: p + f(p)print(function_argument(5, lambda p: p * p))
print(function_argument(10, lambda x: x - 3))
print(function_argument(10, lambda x: x + 5))
print(işlev_argümanı(10, lambda x: x / 5))
Örnek 6: Aşağıdaki örnekte, değerleri sıralamak için lambda kullanılmıştır.
#(ad, soyad, yaş)veri = [("Sachin", "Tendulkar", "42"), ("Rahul", "Dravid", "44"), ("Virendra", "Sehwag", "40")]
veri.sort(key=lambda x:x[0])#isme göre sırala
yazdır(veri)
veri = [("Sachin", "Tendulkar", "42"), ("Rahul", "Dravid", "44"), ("Virendra", "Sehwag", "40")]
veri.sort(key=lambda x:x[1])#soyadına göre sırala
yazdır(veri)
veri = [("Sachin", "Tendulkar", "42"), ("Rahul", "Dravid", "44"), ("Virendra", "Sehwag", "40")]
veri.sort(key=lambda x:x[2])#yaşa göre sırala
yazdır(veri)
Şimdi python3 yorumlayıcısına gidin.
Lambda işlevi birçok yerleşik yöntemde kullanılır. Aşağıdakiler bazı örneklerdir:
1. Harita
Bu işlev, lambda işlevini kullanarak her bir öğeyi sırayla eşler.
Sözdizimi:
harita(işlev, sıra)
Örn:
sayılar = [1,2,3,4,5,6]
Burada listedeki her elemanı 2 ile çarpacağız.
mul_2 = harita(lambda x: x*2, sayılar)
print(list(mul_2)) # Harita nesnesini döndürür ve onu liste olarak yazar.
Yukarıdaki fonksiyonda, listenin her elemanı lambda fonksiyonuna iletilir ve lambda fonksiyonu onu 2 ile çarpacaktır.
sayılar = [1,2,3,4,5,6]mul_2 = harita(lambda x: x*2, sayılar)
yazdır(liste(mul_2))
2. Filtre
Bu işlev, lambda işlevinin True döndürdüğü bir listenin tüm öğelerini filtreler.
Sözdizimi:
filtre(işlev, sıra)
Örn:
sayılar = [0,1,2,3,4,5,6,7,8,9,10]
odd_nums = filtre(lambda x: x % 2, nums)
print(list(odd_nums)) # Harita nesnesini döndürür ve onu liste olarak yazar.
odd_nums = filtre(lambda x: x % 2, nums)
print(liste(odd_nums))
3. Azalt
Bu işlev, seq öğesine func() işlevini uygulayarak tek bir değer döndürür.
Sözdizimi:
azaltmak(işlev, sıra)
Örn:
sayılar = [0,1,2,3,4,5,6,7,8,9,10]
değer = azalt(lambda x,y: x+y, sayılar)
yazdır(değer)
Yukarıdaki listede ilk 2 elemanı alacak ve toplama işlemini gerçekleştirecektir. Bir eklemenin sonucu üçüncü öğeye eklenir ve bu böyle devam eder. Son olarak, tek bir değer döndürür.
Not: Bu yöntem python3+ sürümünde mevcut değildir.
sayılar = [0,1,2,3,4,5,6,7,8,9,10]değer = azalt(lambda x,y: x+y, sayılar)
yazdır(değer)
Sonuç
Bu makaleden lambda fonksiyonunun birçok yönünü öğrendik. Programın neye ihtiyacı olduğuna bağlı olarak onu kullanabilir ve daha iyi python kodlaması yapabiliriz. Bu en yaygın olarak başka bir işleve argümanları iletmek için kullanılır (örneğin, yukarıda haritalama, filtreleme ve azaltma işlevlerini gördük).