Lambda Fonksiyonu ile Özel Hesaplamalar Oluşturma
Lambda, Python'da anonim (isimsiz) fonksiyon yazmak için kullanılan kısa bir yoldur. Basit hesaplamalar için def yazıp durmak yerine, lambda ile tek satırda işi bitirirsin.
Özel hesaplamalar için lambda en çok map(), filter() ve sorted() ile birlikte kullanılır. Mesela bir fiyat listesini yüzde 20 indirimli hale getirmek istersen, lambda bu işi hızlı şekilde halleder.
Basit bir örnek: bir sayı listesinden çift sayıları bul ve ikiye böl.
1sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]23# Çift sayıları filtrele4cift_sayilar = list(filter(lambda x: x % 2 == 0, sayilar))5print(cift_sayilar)6# Çıktı: [2, 4, 6, 8, 10]78# Çift sayıları ikiye böl9bolunen = list(map(lambda x: x / 2, cift_sayilar))10print(bolunen)11# Çıktı: [1.0, 2.0, 3.0, 4.0, 5.0]Ürün fiyatlarına indirim uygulamak istersen:
1urünler = [2{'ad': 'Laptop', 'fiyat': 5000},3{'ad': 'Fare', 'fiyat': 100},4{'ad': 'Klavye', 'fiyat': 300}5]67# Yüzde 20 indirim uygula8indirimli = list(map(lambda u: {'ad': u['ad'], 'fiyat': u['fiyat'] * 0.8}, urünler))910for u in indirimli:11print(f"{u['ad']}: {u['fiyat']} TL")12# Çıktı:13# Laptop: 4000.0 TL14# Fare: 80.0 TL15# Klavye: 240.0 TLSıralama işleminde de lambda kullanabilirsin. Listede en uzun ismi bulmak için:
1isimler = ['Ali', 'Fatih', 'Zeynep', 'Can', 'Merve']23# İsimleri uzunluğuna göre sırala4sirali = sorted(isimler, key=lambda x: len(x), reverse=True)5print(sirali)6# Çıktı: ['Fatih', 'Zeynep', 'Merve', 'Ali', 'Can']Lambda çok pratik olsa da, bir koşul yazarken okunabilirliği kaybetmemeye dikkat et. Eğer hesaplama iki satırdan fazla olacaksa, def ile normal fonksiyon yaz. Lambda tek işlem için tasarlanmıştır. Ayrıca lambda içinde return yazmaya gerek yok; sonuç otomatik döner.
Çoğu başlangıç hatası lambda'nın içini çok karmaşık hale getirmektir. Basit tut, okunabilir kal.
1 yorum
Lambdayı map ve filter ile kullanmak güzel ama sorted kısmında biraz takıldım Parametresi nasıl çalışıyor tam olarak key argümanı ne yapıyor