Python'da Lambda İşlevleri Nasıl Kullanılır [Örneklerle]
Yayınlanan: 2022-11-10Bu öğreticide, söz diziminden lambda işlevlerini tanımlamaya ve kod örnekleriyle farklı kullanım durumlarına kadar Python'daki lambda işlevleri hakkında her şeyi öğreneceksiniz.
Python'da lambdalar, kısa bir sözdizimine sahip anonim işlevlerdir ve diğer yararlı yerleşik işlevlerle birlikte kullanılabilir. Bu öğreticinin sonunda, lambda işlevlerini nasıl tanımlayacağınızı ve bunları normal Python işlevleri üzerinde ne zaman kullanmayı düşünmeniz gerektiğini öğrenmiş olacaksınız.
Hadi başlayalım!
Python Lambda İşlevi: Sözdizimi ve Örnekler
Python'da bir lambda işlevi tanımlamak için genel sözdizimi:
lambda parameter(s):return value
Yukarıdaki genel sözdiziminde:
- lambda , bir lambda işlevi tanımlamak için kullanmanız gereken anahtar sözcüktür ve ardından işlevin alması gereken bir veya daha fazla parametre gelir.
- Parametreleri ve dönüş değerini ayıran bir iki nokta üst üste işareti vardır.
Bir lambda işlevi tanımlarken, tek bir kod satırına yayılan bir ifadeyi değerlendirerek dönüş değerinin hesaplanmasını sağlamalısınız. Örnekleri kodladığımızda bunu daha iyi anlayacaksınız.
Python Lambda Fonksiyon Örnekleri
Lambda işlevlerini anlamanın en iyi yolu, normal Python işlevlerini lambda işlevleri olarak yeniden yazarak başlamaktır.
Bir Python REPL'de veya Geekflare'nin çevrimiçi Python düzenleyicisinde kod yazabilirsiniz.
#1 . Argüman olarak bir sayıyı ( num
) alan ve sayının karesini döndüren aşağıdaki square()
işlevini göz önünde bulundurun.
def square(num): return num*num
İşlevi argümanlarla çağırabilir ve düzgün çalıştığını doğrulayabilirsiniz.
>>> square(9) 81 >>> square(12) 144
Bu lambda ifadesini bir değişken adına atayabilirsiniz, örneğin, işlev tanımını daha özlü hale getirmek için square1
: square1 = lambda num: num*num
ve ardından argüman olarak herhangi bir sayı ile square1
işlevini çağırın. Ancak lambdaların isimsiz fonksiyonlar olduğunu biliyoruz, bu yüzden onları bir değişkene atamaktan kaçınmalısınız.
square()
işlevi için parametre num
ve dönüş değeri num*num
. Bunları tanımladıktan sonra, onları lambda ifadesine bağlayabilir ve gösterildiği gibi bir argümanla çağırabiliriz:
>>> (lambda num: num*num)(2) 4
Bu, bir işlevi tanımladıktan hemen sonra çağırdığımız Hemen Çağrılan İşlev İfadesi kavramıdır.
# 2 . Daha sonra, num1
ve num2
sayılarını alan ve bunların toplamını, num1 + num2
döndüren başka bir basit add()
işlevini yeniden yazalım.
def add(num1,num2): return num1 + num2
Argüman olarak iki sayı ile add()
işlevini çağıralım:
>>> add(4,3) 7 >>> add(12,5) 17 >>> add(12,6) 18
Bu durumda, num1
ve sayı2 iki parametredir ve dönüş değeri num1 + num2
num2
>>> (lambda num1, num2: num1 + num2)(3,7) 10
Python işlevleri, parametreler için varsayılan değerler de alabilir. add()
işlevinin tanımını değiştirelim ve num2
parametresinin varsayılan değerini 10 olarak ayarlayalım.
def add(num1, num2=10): return num1 + num2
Aşağıdaki işlev çağrılarında:
- İlk işlev çağrısında,
num1
değeri 1'dir venum2
değeri 3'tür. İşlev çağrısındanum2
değerini ilettiğinizde, o değer kullanılır; fonksiyon 4 döndürür.
- Ancak, yalnızca bir bağımsız değişken (
num1
7'dir) iletirseniz,num2
için varsayılan 10 değeri kullanılır; işlev 17 değerini döndürür.
>>> add(1,3) 4 >>> add(7) 17
Belirli parametreler için varsayılan değerleri lambda ifadesi olarak alan fonksiyonları yazarken, parametreleri tanımlarken varsayılan değeri belirtebilirsiniz.
>>> (lambda num1, num2 = 10: num1 + num2)(1) 11
Python'da Lambda İşlevlerini Ne Zaman Kullanmalısınız?
Python'da lambda fonksiyonlarının temellerini öğrendiğinize göre, işte birkaç kullanım örneği:
- Dönüş ifadesi tek bir kod satırı olan bir fonksiyonunuz varsa ve aynı modülde başka bir yerde fonksiyona başvurmanız gerekmiyorsa, lambda fonksiyonlarını kullanabilirsiniz. Bunu anlamak için birkaç örnek de kodladık.
- map(), filter() ve Reduce() gibi yerleşik işlevleri kullanırken lambda işlevlerini kullanabilirsiniz.
- Lambda işlevleri, listeler ve sözlükler gibi Python veri yapılarının sıralanmasında yardımcı olabilir.
Python Lambda'yı Yerleşik İşlevlerle Kullanma
1. Lambda'yı map() ile kullanma
map()
işlevi bir yinelenebilir ve bir işlev alır ve işlevi yinelenebilirdeki her öğeye, gösterildiği gibi uygular:

Bir nums
listesi oluşturalım ve nums
listesindeki her sayının karesini içeren yeni bir liste oluşturmak için map()
işlevini kullanalım. Kare alma işlemini tanımlamak için lambda işlevinin kullanımına dikkat edin.
>>> nums = [4,5,6,9] >>> list(map(lambda num:num*num,nums)) [16, 25, 36, 81]
map()
işlevi bir map nesnesi döndürdüğü için onu bir listeye çevirmeliyiz.
️ Python'daki map() işleviyle ilgili bu eğiticiye göz atın.
2. Lambda'yı filter() ile kullanma
Sayıların bir listesi olan nums
tanımlayalım:
>>> nums = [4,5,6,9]
Bu listeyi filtrelemek ve yalnızca tek sayıları saklamak istediğinizi varsayalım.
Python'un yerleşik filter()
işlevini kullanabilirsiniz.
filter()
işlevi bir koşul ve yinelenebilir bir : filter(condition, iterable)
. Sonuç, yalnızca koşulu karşılayan orijinal yinelenebilir öğedeki öğeleri içerir. Döndürülen nesneyi list gibi yinelenebilir bir Python'a dönüştürebilirsiniz.

Tüm çift sayıları filtrelemek için yalnızca tek sayıları tutacağız. Yani lambda ifadesi lambda num: num%2!=0
olmalıdır. num%2
miktarı, num
2'ye bölündüğünde kalandır.
-
num%2!=0
,num
tek olduğundaTrue
ve -
num%2!=0
,num
çift olduğundaFalse
olur.
>>> nums = [4,5,6,9] >>> list(filter(lambda num:num%2!=0,nums)) [5, 9]
3. Lambda'yı azaltma() ile kullanma
reduce()
işlevi, yinelenebilir ve bir işlev alır. İşlevi yinelenebilir öğelere yinelemeli olarak uygulayarak yinelenebilirliği azaltır.


reduce()
işlevini kullanmak için, onu Python'un yerleşik functools
modülünden içe aktarmanız gerekir:
>>> from functools import reduce
nums
listesindeki tüm sayıların toplamını hesaplamak için reduce()
işlevini kullanalım. İndirgeyici toplam işlevi olarak bir lambda ifadesi tanımlarız: lambda num1,num2:num1+num2
.
İndirgeme işlemi şu şekilde gerçekleşecektir: f(f(f(4,5),6),9) = f(f(9,6),9) = f(15,9) = 24. Burada f lambda işlevi tarafından tanımlanan listenin iki öğesi üzerinde toplama işlemi.
>>> from functools import reduce >>> nums = [4,5,6,9] >>> reduce(lambda num1,num2:num1+num2,nums) 24
Sıralamayı Özelleştirmek için Python Lambda İşlevleri
map()
, filter()
ve reduce()
gibi yerleşik Python işlevleriyle lambda işlevlerini kullanmaya ek olarak, bunları yerleşik işlevleri ve sıralama için kullanılan yöntemleri özelleştirmek için de kullanabilirsiniz.

1. Python Listelerini Sıralama
Python listeleriyle çalışırken, genellikle onları belirli sıralama kriterlerine göre sıralamanız gerekir. Python listelerini yerinde sıralamak için yerleşik sort()
yöntemini kullanabilirsiniz. Listenin sıralanmış bir kopyasına ihtiyacınız varsa, sorted()
işlevini kullanabilirsiniz.
Python'un sorted
sorted()
işlevini kullanmak için sözdizimisorted(iterable, key=...,reverse= True | False)
.
–key
parametre, sıralamayı özelleştirmek için kullanılır.
–reverse
parametreTrue
veyaFalse
olarak ayarlanabilir; varsayılan değerFalse
.
Sayı ve dizi listelerini sıralarken, varsayılan sıralama sırasıyla artan sırada ve alfabetik sıradadır. Ancak, bazen sıralama için bazı özel ölçütler tanımlamak isteyebilirsiniz.
Aşağıdaki liste fruits
göz önünde bulundurun. Listenin sıralanmış bir kopyasını almak istediğinizi varsayalım. Dizeleri, içindeki 'p' oluşum sayısına göre azalan düzende sıralamanız gerekir.
>>> fruits = ['apple','pineapple','grapes','mango']
İsteğe bağlı key
parametresini kullanma zamanı. Bir dize Python'da yinelenebilir bir karakterdir ve içindeki bir karakterin oluşum sayısını elde etmek için yerleşik .count()
yöntemini kullanabilirsiniz. Bu yüzden key
lambda x:x.count('p')
olarak ayarladık, böylece sıralama dizgede 'p'nin meydana gelme sayısını temel alır.
>>> fruits = ['apple','pineapple','grapes','mango'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['pineapple', 'apple', 'grapes', 'mango']
Bu örnekte:
- Sıralamanın
key
, 'p' karakterinin oluşum sayısıdır ve bir lambda ifadesi olarak tanımlanır. -
reverse
parametreyiTrue
olarak ayarladığımız için, sıralama 'p' oluşum sayısının azalan düzeninde gerçekleşir.
fruits
listesinde, 'ananas' 3 kez 'p' içerir ve 'elma', 'üzüm' ve 'mango' dizeleri sırasıyla 2, 1 ve 0 'p' oluşumunu içerir.
Kararlı Sıralamayı Anlama
Başka bir örnek düşünün. Aynı sıralama kriteri için fruits
listesini yeniden tanımladık. Burada 'p', 'elma' ve 'üzüm' dizilerinde sırasıyla iki ve bir kez bulunur. Ve asla 'mango' ve 'kavun' dizelerinde oluşmaz.
>>> fruits = ['mango','apple','melon','grapes'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['apple', 'grapes', 'mango', 'melon']
Her ikisinde de 'p' karakteri bulunmasa da, çıktı listesinde 'mango', 'kavun'dan önce gelir. Ama bu neden böyle? sorted()
işlevi, kararlı bir sıralama gerçekleştirir; bu nedenle 'p' sayısı iki dize için eşit olduğunda, orijinal fruits
listesindeki öğelerin sırası korunur.
Hızlı bir alıştırma olarak,
fruits
listesinde 'mango' ve 'kavun' konumlarını değiştirin, listeyi aynı kritere göre sıralayın ve çıktıyı gözlemleyin.
️ Python listelerini sıralama hakkında daha fazla bilgi edinin.
2. Python Sözlüğünü Sıralama
Python sözlüklerini sıralarken lambdaları da kullanabilirsiniz. Öğeleri ve fiyatlarını içeren aşağıdaki price_dict
sözlüğünü göz önünde bulundurun.
>>> price_dict = { ... 'Milk':10, ... 'Honey':15, ... 'Bread':7, ... 'Candy':3 ... }
Bir sözlüğün anahtar/değer çiftlerini bir demet listesi olarak almak için yerleşik sözlük yöntemini .items()
kullanabilirsiniz:
>>> price_dict_items = price_dict.items() dict_items([('Milk', 10), ('Honey', 15), ('Bread', 7), ('Candy', 3)])
Python'da tüm yinelenebilirler: listeler, demetler, dizeler ve daha fazlası sıfır indekslemeyi takip eder. Bu nedenle, ilk öğe 0 dizininde, ikinci öğe 1 dizininde vb.
Sözlükteki her bir öğenin fiyatı olan değere göre sıralamak istiyoruz. price_dict_items
listesindeki her bir demette, dizin 1'deki öğe fiyattır. Bu yüzden key
lambda x:x[1]
olarak ayarladık, çünkü sözlüğü sıralamak için indeks 1'deki öğeyi, yani fiyatı kullanacaktır.
>>> dict(sorted(price_dict_items,key=lambda x:x[1])) {'Candy': 3, 'Bread': 7, 'Milk': 10, 'Honey': 15}
Çıktıda, sözlük öğeleri artan fiyatlara göre sıralanmıştır: 'Şeker' ile başlayan, 3 birim fiyatla 'Bal', 15 birim fiyatla.
️ Daha fazla bilgi edinmek için, bir Python sözlüğünü anahtar ve değere göre sıralamayla ilgili bu ayrıntılı kılavuza göz atın.
Özetliyor
İşte buyur! Lambda işlevlerini nasıl tanımlayacağınızı ve bunları diğer yerleşik Python işlevleriyle nasıl etkili bir şekilde kullanacağınızı öğrendiniz. İşte önemli çıkarımların bir özeti:
- Python'da lambdalar, birden çok argüman alabilen ve bir değer döndürebilen anonim işlevlerdir ; bu dönüş değerini oluşturmak için değerlendirilecek ifade bir kod satırı olmalıdır. Küçük fonksiyon tanımlarını daha özlü hale getirmek için kullanılabilirler.
- Lambda işlevini tanımlamak için şu söz dizimini kullanabilirsiniz: lambda parametre(ler): dönüş değeri .
- Önemli kullanım durumlarından bazıları, bunları
map()
,filter()
ve Reducereduce()
işlevleriyle ve Python yinelemelerinin sıralamasını özelleştirmek için anahtar parametre olarak kullanmayı içerir.
Ardından, Python'da kat bölme işlemini nasıl yapacağınızı öğrenin.