पायथन में लैम्ब्डा फ़ंक्शन

लैम्ब्डा कार्य क्या हैं?

Στρατός Assault - Παίξτε Funny Games
पायथन में, कार्य वस्तुएं हैं: उन्हें चर के लिए असाइन किया जा सकता है, अन्य कार्यों से लौटाया जा सकता है, सूचियों या डिक्ट्स में संग्रहीत किया जाता है और अन्य कार्यों के लिए पैरामीटर के रूप में पारित किया जाता है। उदाहरण के लिए, पर विचार करें map() अंतर्निहित समारोह। इसका वाक्य-विन्यास है map(function, iterable) और इसका उपयोग आसानी से लगाने के लिए किया जाता है function के हर तत्व के लिए iterable.

map() वास्तव में एक लौटाता है iterator वस्तु। व्यवहार में, हम परिणाम को एक के रूप में डालते हैं list, tuple, set, dict, आदि, जो भी अधिक सुविधाजनक हो।
Στρατός Assault - Παίξτε Funny Games
मान लीजिए कि आप का उपयोग करके सूची के प्रत्येक पद का वर्ग करना चाहते हैं map() समारोह। ऐसा करने के लिए, हम a को परिभाषित करेंगे square() कार्य करें और इसे पैरामीटर के रूप में उपयोग करें map():

my_list = [1,2,3,4,5]
def square(x):
    return x**2

my_modified_list = list(map(square, my_list))
print(my_modified_list)
[1, 4, 9, 16, 25]

Στρατός Assault - Παίξτε Funny Games
हालांकि, अगर हमारे का ही उपयोग square() कार्य इस सूची को बनाने के लिए है, यह उपयोग करने के लिए क्लीनर है lambda समारोह:

my_list = [1,2,3,4,5]
my_modified_list = list(map(lambda x: x**2, my_list))
print(my_modified_list)
[1, 4, 9, 16, 25]

पायथन में, lambda फ़ंक्शन गुमनाम फ़ंक्शन हैं जो अलोंजो चर्च के नाम और सिंटैक्स से अपना नाम लेते हैं लैम्ब्डा कैलकुलस. उनका वाक्य-विन्यास है:

lambda x_1,..., x_n : expression(x_1, ..., x_n)

यह एक अनाम फ़ंक्शन बनाता है जो चर को इनपुट के रूप में प्राप्त करता है x_1, ..., x_n और मूल्यांकित लौटाता है expression(x_1, ..., x_n).
Στρατός Assault - Παίξτε Funny Games
के प्रयोजन के lambda फ़ंक्शन को उन फ़ंक्शन के लिए पैरामीटर के रूप में उपयोग किया जाना है जो फ़ंक्शन को पैरामीटर के रूप में स्वीकार करते हैं, जैसा कि हमने किया था map() ऊपर। पायथन आपको असाइन करने की अनुमति देता है lambda एक चर के लिए कार्य करें, लेकिन पीईपी 8 स्टाइल गाइड इसके खिलाफ सलाह देता है। यदि आप एक चर के लिए एक साधारण फ़ंक्शन असाइन करना चाहते हैं, तो इसे एक-पंक्ति परिभाषा के रूप में करना बेहतर होता है। यह सुनिश्चित करता है कि परिणामी वस्तु का सही नाम है, ट्रेसबैक पठनीयता में सुधार:

anonymous_square = lambda x : x**2def named_square(x): return x**2print(anonymous_square.__name__)
print(named_square.__name__)


a = anonymous_square
b = named_square
print(a.__name__)
print(b.__name__)

लैम्ब्डा फ़ंक्शंस का उपयोग क्यों करें?

अंतिम पैराग्राफ के बाद, आप सोच रहे होंगे कि आप इसका उपयोग क्यों करना चाहेंगे lambda समारोह। आखिरकार, कुछ भी जो एक के साथ किया जा सकता है lambda समारोह नामित समारोह के साथ किया जा सकता है।
Στρατός Assault - Παίξτε Funny Games
इसका उत्तर यह है कि lambda समारोह के उद्देश्य गणना का प्रतिनिधित्व करने वाले बड़े भावों के अंदर रहना है। इसके बारे में सोचने का एक तरीका चर और मूल्यों के अनुरूप है। निम्नलिखित कोड पर विचार करें:

x = 2

चर x पूर्णांक के लिए एक प्लेसहोल्डर (या एक नाम) है 2. मसलन, कॉल करना print(x) और print(2) बिल्कुल वही आउटपुट देता है। कार्यों के मामले में:

def square(x): return x**2

समारोह square() किसी संख्या का वर्ग करने की गणना के लिए प्लेसहोल्डर है। इस संगणना को गुमनाम तरीके से लिखा जा सकता है lambda x: x**2.
Στρατός Assault - Παίξτε Funny Games
इस दार्शनिक विषयांतर के बाद, आइए अनुप्रयोगों के कुछ उदाहरण देखें lambda कार्य करता है.
Στρατός Assault - Παίξτε Funny Games

क्रमबद्ध () फ़ंक्शन के साथ लैम्ब्डा का उपयोग करना

RSI sorted() फ़ंक्शन एक पुनरावर्तनीय सॉर्ट करता है। यह एक समारोह को इसके रूप में स्वीकार करता है key तर्क, और पुनरावर्तनीय के प्रत्येक तत्व पर लागू फ़ंक्शन का परिणाम तत्वों को ऑर्डर करने के लिए उपयोग किया जाता है।
Στρατός Assault - Παίξτε Funny Games
यह एक के लिए पूरी तरह से अनुकूल है lambda समारोह: की स्थापना करके key ए के साथ पैरामीटर lambda फ़ंक्शन, हम तत्वों की किसी भी प्रकार की विशेषता के आधार पर सॉर्ट कर सकते हैं। उदाहरण के लिए, हम उपनाम द्वारा नामों की सूची क्रमबद्ध कर सकते हैं:

name_list = ['Grace Hopper', 'Ada Lovelace', 'Emmy Noether', 'Marie Curie']
​
sorted_by_surname = sorted(name_list, key = lambda x: x.split()[1])
​
print(sorted_by_surname)
['Marie Curie', 'Grace Hopper', 'Ada Lovelace', 'Emmy Noether']

'फ़िल्टर ()' फ़ंक्शन के साथ लैम्ब्डा का उपयोग करना

RSI filter() फ़ंक्शन में निम्न सिंटैक्स है: filter(function, iterable) और यह के तत्वों को आउटपुट करता है iterable जो मूल्यांकन करते हैं function(element) सच के रूप में (यह एक के समान है WHERE एसक्यूएल में खंड)। हम इसका उपयोग कर सकते हैं lambda के पैरामीटर के रूप में कार्य करता है filter() पुनरावर्तनीय से तत्वों का चयन करने के लिए।

निम्नलिखित उदाहरण पर विचार करें:

num_list = list(range(0,100))
​
multiples_of_15= filter(lambda x: (x % 3 == 0) and (x % 5 == 0), num_list)
​
print(list(multiples_of_15))
[0, 15, 30, 45, 60, 75, 90]

filter() लागू होता है lambda समारोह lambda x: (x % 3 == 0) and (x % 5 == 0) के प्रत्येक तत्व को range(0,100), और ए लौटाता है filter वस्तु। हम तत्वों को इस रूप में कास्ट करके एक्सेस करते हैं list.
Στρατός Assault - Παίξτε Funny Games

मानचित्र () फ़ंक्शन के साथ लैम्ब्डा का उपयोग करना

Στρατός Assault - Παίξτε Funny Games
हमारा आखिरी उदाहरण कुछ ऐसा है जिसे हमने परिचय में देखा है - द map() समारोह। map() फ़ंक्शन सिंटैक्स है: map(function, iterable), तथा map() लागू होता है function के प्रत्येक तत्व को iterable, लौट रहा है ए map ऑब्जेक्ट जिसे कास्ट करके एक्सेस किया जा सकता है list.

हमने देखा है कि इसे सूचियों पर कैसे लागू किया जा सकता है, लेकिन इसे dicts पर लागू किया जा सकता है dict.items() तरीका:

my_data = {'Mary':1, 'Alice':2, 'Bob':0}
map_obj = map(lambda x: f'{x[0]} had {x[1]} little lamb', my_data.items())
print(', '.join((map_obj)))
Mary had 1 little lamb, Alice had 2 little lamb, Bob had 0 little lamb

या एक स्ट्रिंग के लिए:

my_string = 'abcdefg'
''.join(map(lambda x: chr(ord(x)+2),my_string))
'cdefghi'

सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!

हम प्रयोग कर सकते हैं map() सरल तरीके से कार्य करें - एक उदाहरण एक ही इनपुट पर कई फ़ंक्शन लागू कर रहा है।

उदाहरण के लिए, मान लीजिए कि आप एक एपीआई बना रहे हैं जो टेक्स्ट स्ट्रिंग प्राप्त करता है, और आप इसे कार्यों की एक सूची लागू करना चाहते हैं।

प्रत्येक फ़ंक्शन पाठ से कुछ विशेषता निकालता है। जिन विशेषताओं को हम निकालना चाहते हैं वे हैं शब्दों की संख्या, दूसरा शब्द और चौथे शब्द का चौथा अक्षर:

def number_of_words(text):
  return len(text.split())
​
def second_word(text):
  return text.split()[1]
​
def fourth_letter_of_fourth_word(text):
  return text.split()[3][3]
​
function_list = [number_of_words, second_word, fourth_letter_of_fourth_word]
​
my_text = 'Mary had a little lamb'
map_obj = map(lambda f: f(my_text), function_list)
​
feature_list = list(map_obj)
​
print(feature_list)
[5, 'had', 't']

Στρατός Assault - Παίξτε Funny Games

निष्कर्ष

Στρατός Assault - Παίξτε Funny Games
इस गाइड में, हमने की कार्यक्षमता का पता लगाया है lambda पायथन में कार्य करता है। हमने देखा है lambda फ़ंक्शन अन्य कार्यों के लिए इनलाइन फ़ंक्शन पैरामीटर के रूप में उपयोग किए जाने वाले अज्ञात फ़ंक्शन हैं। हमने कुछ उपयोग मामलों के साथ-साथ उनका उपयोग न करने के बारे में भी देखा है।
Στρατός Assault - Παίξτε Funny Games
प्रोग्रामिंग करते समय, डोनाल्ड नुथ के उद्धरण को ध्यान में रखना महत्वपूर्ण है: "कार्यक्रम मनुष्यों द्वारा पढ़े जाने के लिए होते हैं और केवल संयोग से कंप्यूटरों को निष्पादित करने के लिए होते हैं।" इसे ध्यान में रखकर, lambda हमारे कोड को सरल बनाने के लिए फ़ंक्शन एक उपयोगी उपकरण है, लेकिन इसका बुद्धिमानी से उपयोग किया जाना चाहिए।

समय टिकट:

से अधिक स्टैकब्यूज