Ana içeriğe geç
Modül 5 · Ders 4 ders 4Kurstaki 20/36~10 min
Modül dersleri (4/4)

Lambda ve üst düzey fonksiyonlar

lambda tek bir satırda tanımlanan anonim bir işlevdir. Sözdizimi:

Python
lambda parametri: espressione

def ile eşdeğerdir, ancak daha kısa ve "tek kullanımlık" için daha uygun diğer işlevlere geçmek için işlevler.

Python
quadrato = lambda x: x ** 2
quadrato(5)    # 25

# equivalent to:
def quadrato(x):
    return x ** 2

Farklılıklar ve def

Görünüşdeflambda
isimgereklianonim
vücutçoklu ifadelerTEK bir ifade
dönüşaçıkörtülü (ifade)
belge dizisievethayır

Lambda içinde return yok: ifadenin değeri sonuçtur.

Lambda ne zaman kullanılır?

Neredeyse her zaman: sıralama veya seçim işlevleri için key bağımsız değişkeni olarak.

Python
parole = ["banana", "kiwi", "mela", "fragola"]
sorted(parole, key=len)
# ['kiwi', 'mela', 'banana', 'fragola']

key=len, sorted'a şunu söyler: "iki öğeyi karşılaştırmak için uzunluklarını kullanın". için özel ölçütler, lambda kullanın:

Python
utenti = [
    {"nome": "Ada", "eta": 36},
    {"nome": "Linus", "eta": 54},
    {"nome": "Grace", "eta": 85},
]
per_eta = sorted(utenti, key=lambda u: u["eta"])
# sorted by ascending age

Diğer tipik kullanımlar: min(...), max(...), filter(...), map(...).

Python
nums = [-3, 1, -4, 1, -5, 9]
max(nums, key=lambda n: abs(n))   # -5 (maximum by absolute value)

Daha yüksek dereceli işlevler

Bir işlev, bir işlevi bağımsız değişken olarak kabul ediyorsa yüksek dereceli'dir veya birini döndürür. sorted, max, filter, map daha yüksek düzeydedir. Lambda üst düzey aramaları kolaylaştırmak için tam olarak mevcuttur.

Lambda işlevlerinden ne zaman kaçınılmalıdır?

Lambda işlevleri kısa, tek kullanımlık işlemler (hızlı sıralama gibi) için kullanışlıdır. Bununla birlikte, kendinizi bir değişkene bir lambda atarken bulursanız (örneğin, double = lambda x: x * 2), okunabilirlik ve hata ayıklama amacıyla genellikle standart bir def bloğunun kullanılması tercih edilir (çünkü def ile tanımlanan işlevler, hata izlemelerinde gerçek adlarını korur).

Deneyin

Egzersiz#python.m5.l4.e1
Denemeler: 0Yükleniyor…

`Kelimeler = ['muz', 'kivi', 'mela', 'fragola']` listesi verildiğinde, bunu uzunluğa göre "uzunluğa göre" artan şekilde sıralayın. "uzunluğa göre" değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

anahtar=len (veya lambda p: len(p)).

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m5.l4.e2
Denemeler: 0Yükleniyor…

'points = [(1, 5), (3, 2), (2, 4)]' demetlerinin listesi verildiğinde, bunları SECOND öğesine göre artan sırada sıralayın ve 'by_y'ye atayın. "by_y"ye göre değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

lambda p: p[1]

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m5.l4.e3
Denemeler: 0Yükleniyor…

Define an anonymous `lambda` function that takes a number `x` and returns `True` if the number is even, and `False` otherwise. Assign the lambda to the variable `is_even` and test it with `is_even(8)` as the last line.

Düzenleyici yükleniyor…
İpucu göster

is_even = lambda x: x % 2 == 0 yazın ve ardından is_even(8)'i çağırın.

3 denemeden sonra çözüm mevcut