مرکزی مواد پر جائیں
ماڈیول 5 · سبق 4 از 4کورس میں 20/36~10 min
ماڈیول اسباق (4/4)

لیمبڈا اور اعلیٰ ترتیب کے افعال

A lambda ایک گمنام فنکشن ہے، جس کی وضاحت ایک لائن پر ہوتی ہے۔ نحو:

Python
lambda parametri: espressione

def کے مساوی، لیکن زیادہ جامع اور "تھرواوے" کے لیے موزوں دوسرے افعال کو منتقل کرنے کے فنکشنز۔

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

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

فرق بمقابلہ def

پہلوdeflambda
ناممطلوبہگمنام
جسممتعدد بیاناتایک واحد اظہار
واپسیواضحimplicit (اظہار)
docstringہاںنہیں

لیمبڈا کے اندر نہیں return: اظہار کی قدر نتیجہ ہے۔

لیمبڈا کب استعمال کریں۔

تقریباً ہمیشہ: بطور key استدلال ترتیب دینے یا سلیکشن فنکشنز کے لیے۔

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

key=len بتاتا ہے sorted: "دو عناصر کا موازنہ کرنے کے لیے، ان کی لمبائی کا استعمال کریں"۔ کے لیے حسب ضرورت معیار، لیمبڈا استعمال کریں:

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

دیگر عام استعمالات: min(...), max(...), filter(...), map(...)۔

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

اعلیٰ ترتیب کے افعال

فنکشن ہائی آرڈر ہوتا ہے اگر یہ کسی فنکشن کو بطور دلیل قبول کرتا ہے یا ایک واپس کرتا ہے. sorted, max, filter, map اعلی درجے کے ہیں۔ لیمبڈا اعلیٰ آرڈر کالوں کو آسان بنانے کے لیے بالکل موجود ہے۔

لیمبڈا کے افعال سے کب بچنا ہے۔

لیمبڈا فنکشنز مختصر، پھینک دینے والے آپریشنز (جیسے فوری چھانٹنا) کے لیے مفید ہیں۔ تاہم، اگر آپ اپنے آپ کو کسی متغیر (جیسے double = lambda x: x * 2) کو لیمبڈا تفویض کرتے ہوئے پاتے ہیں، تو عام طور پر پڑھنے کی اہلیت اور ڈیبگنگ کے مقاصد کے لیے معیاری def بلاک استعمال کرنے کو ترجیح دی جاتی ہے (چونکہ فنکشنز def کے ساتھ متعین کردہ نام کی غلطی کو برقرار رکھتے ہیں)۔

اسے آزمائیں

ورزش#python.m5.l4.e1
کوششیں: 0لوڈ ہو رہا ہے…

فہرست `الفاظ = ['کیلے'، 'کیوی'، 'میلہ'، 'فرگولا']` کو دیکھتے ہوئے، اسے بڑھتے ہوئے لمبائی کو `بائی_لمبائی` میں ترتیب دیں۔ `by_length` کا اندازہ لگائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

key=len (یا lambda p: len(p))۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#python.m5.l4.e2
کوششیں: 0لوڈ ہو رہا ہے…

ٹیپلز کی فہرست کو دیکھتے ہوئے `پوائنٹس = [(1, 5), (3, 2), (2, 4)]`، انہیں صعودی ترتیب میں SECOND عنصر سے ترتیب دیں اور `by_y` کو تفویض کریں۔ `by_y` کا اندازہ لگائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

lambda p: p[1]

3 کوششوں کے بعد حل دستیاب ہے۔

اضافی چیلنج

ورزش#python.m5.l4.e3
کوششیں: 0لوڈ ہو رہا ہے…

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.

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

is_even = lambda x: x % 2 == 0 لکھیں اور پھر is_even(8) کو کال کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔