मॉड्यूल पाठ (4/4)
लैम्ब्डा और उच्च-क्रम के कार्य
A lambda एक अनाम फ़ंक्शन है, जिसे एक पंक्ति में परिभाषित किया गया है। सिंटेक्स:
lambda parametri: espressionedef के समतुल्य, लेकिन अधिक संक्षिप्त और "थ्रोअवे" के लिए उपयुक्त
अन्य कार्यों को पारित करने के लिए कार्य।
quadrato = lambda x: x ** 2
quadrato(5) # 25
# equivalent to:
def quadrato(x):
return x ** 2अंतर बनाम def
| पहलू | def | lambda |
|---|---|---|
| नाम | आवश्यक | गुमनाम |
| शरीर | अनेक कथन | एक एकल अभिव्यक्ति |
| वापसी | स्पष्ट | निहित (अभिव्यक्ति) |
| डॉकस्ट्रिंग | हाँ | नहीं |
लैम्ब्डा के अंदर कोई return नहीं: अभिव्यक्ति का मान परिणाम है।
लैम्ब्डा का उपयोग कब करें
लगभग हमेशा: सॉर्टिंग या चयन कार्यों के लिए key तर्क के रूप में।
parole = ["banana", "kiwi", "mela", "fragola"]
sorted(parole, key=len)
# ['kiwi', 'mela', 'banana', 'fragola']key=len sorted को बताता है: "दो तत्वों की तुलना करने के लिए, उनकी लंबाई का उपयोग करें"। के लिए
कस्टम मानदंड, लैम्ब्डा का उपयोग करें:
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(...)।
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 के साथ परिभाषित फ़ंक्शन त्रुटि ट्रेसबैक में अपने वास्तविक नाम बनाए रखते हैं)।
इसे अजमाएं
सूची `शब्द = ['केला', 'कीवी', 'मेला', 'फ्रैगोला']` को देखते हुए, इसे लंबाई को `by_length` में आरोही क्रम में क्रमबद्ध करें। `by_length` का मूल्यांकन करें।
संकेत दिखाएँ
कुंजी=लेन (या लैम्ब्डा पी: लेन(पी))।
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
टुपल्स की सूची `अंक = [(1, 5), (3, 2), (2, 4)]` को देखते हुए, उन्हें आरोही क्रम में दूसरे तत्व द्वारा क्रमबद्ध करें और `by_y` को असाइन करें। `by_y` का मूल्यांकन करें।
संकेत दिखाएँ
लैम्ब्डा पी: पी[1]
3 प्रयासों के बाद समाधान उपलब्ध है
अतिरिक्त चुनौती
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 प्रयासों के बाद समाधान उपलब्ध है