मुख्य सामग्री पर जाएं
मॉड्यूल 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
नामआवश्यकगुमनाम
शरीरअनेक कथनएक एकल अभिव्यक्ति
वापसीस्पष्टनिहित (अभिव्यक्ति)
डॉकस्ट्रिंगहाँनहीं

लैम्ब्डा के अंदर कोई 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` में आरोही क्रम में क्रमबद्ध करें। `by_length` का मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

कुंजी=लेन (या लैम्ब्डा पी: लेन(पी))।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#python.m5.l4.e2
प्रयास: 0लोड हो रहा है...

टुपल्स की सूची `अंक = [(1, 5), (3, 2), (2, 4)]` को देखते हुए, उन्हें आरोही क्रम में दूसरे तत्व द्वारा क्रमबद्ध करें और `by_y` को असाइन करें। `by_y` का मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

लैम्ब्डा पी: पी[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 प्रयासों के बाद समाधान उपलब्ध है