ازگر میں لیمبڈا کے افعال

لیمبڈا کے افعال کیا ہیں؟


Python میں، فنکشنز آبجیکٹ ہیں: انہیں متغیرات کے لیے تفویض کیا جا سکتا ہے، دوسرے فنکشنز سے واپس کیا جا سکتا ہے، فہرستوں یا ڈکٹ میں محفوظ کیا جا سکتا ہے اور دوسرے فنکشنز کے لیے پیرامیٹرز کے طور پر پاس کیا جا سکتا ہے۔ مثال کے طور پر غور کریں۔ map() بلٹ میں فنکشن. اس کا نحو ہے۔ map(function, iterable) اور اسے آسانی سے لاگو کرنے کے لیے استعمال کیا جاتا ہے۔ function کے ہر عنصر کو iterable.

map() اصل میں ایک واپس کرتا ہے iterator چیز. عملی طور پر، ہم نتیجہ کو a کے طور پر ڈالتے ہیں۔ list, tuple, set, dictوغیرہ، جو بھی زیادہ آسان ہو۔

فرض کریں کہ آپ کا استعمال کرتے ہوئے فہرست کی ہر اصطلاح کو مربع کرنا چاہتے ہیں۔ map() فنکشن ایسا کرنے کے لیے، ہم ایک کی وضاحت کریں گے۔ 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]


تاہم، اگر صرف ہمارے استعمال 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).

کا مقصد lambda فنکشنز کو ان فنکشنز کے لیے پیرامیٹر کے طور پر استعمال کیا جانا ہے جو فنکشنز کو پیرامیٹر کے طور پر قبول کرتے ہیں، جیسا کہ ہم نے کیا تھا۔ map() اوپر ازگر آپ کو تفویض کرنے کی اجازت دیتا ہے a 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__)

لیمبڈا فنکشنز کیوں استعمال کریں؟

آخری پیراگراف کے بعد، آپ سوچ رہے ہوں گے کہ آپ a کیوں استعمال کرنا چاہیں گے۔ lambda فنکشن سب کے بعد، کچھ بھی جو ایک کے ساتھ کیا جا سکتا ہے lambda فنکشن ایک نامزد فنکشن کے ساتھ کیا جا سکتا ہے۔

اس کا جواب یہ ہے کہ lambda افعال مقصد ایک حساب کی نمائندگی کرنے والے بڑے تاثرات کے اندر رہنا ہے۔ اس کے بارے میں سوچنے کا ایک طریقہ متغیرات اور اقدار کے ساتھ مشابہت ہے۔ درج ذیل کوڈ پر غور کریں:

x = 2

متغیر x عدد کے لیے پلیس ہولڈر (یا نام) ہے۔ 2. مثال کے طور پر کال کرنا print(x) اور print(2) بالکل وہی آؤٹ پٹ دیتا ہے۔ افعال کی صورت میں:

def square(x): return x**2

تقریب square() ایک نمبر کے مربع کی گنتی کے لیے ایک پلیس ہولڈر ہے۔ اس حساب کو بے نام انداز میں لکھا جا سکتا ہے۔ lambda x: x**2.

اس فلسفیانہ اختلاف کے بعد، آئیے اس کے لیے درخواستوں کی کچھ مثالیں دیکھتے ہیں۔ lambda کام کرتا ہے.

ترتیب شدہ () فنکشن کے ساتھ لیمبڈا کا استعمال

۔ sorted() فنکشن ایک تکراری ترتیب دیتا ہے۔ یہ ایک فنکشن کو اس کے بطور قبول کرتا ہے۔ key argument، اور تکرار کے ہر عنصر پر لاگو فنکشن کا نتیجہ عناصر کو ترتیب دینے کے لیے استعمال کیا جاتا ہے۔

یہ ایک کے لیے بالکل موزوں ہے۔ 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']

'فلٹر ()' فنکشن کے ساتھ لیمبڈا کا استعمال

۔ 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)، اور واپسی a filter چیز. ہم اسے بطور کاسٹ کرکے عناصر تک رسائی حاصل کرتے ہیں۔ list.

نقشہ () فنکشن کے ساتھ لیمبڈا کا استعمال


ہماری آخری مثال کچھ ایسی ہے جسے ہم نے تعارف میں دیکھا ہے۔ map() تقریب map() فنکشن نحو ہے: map(function, iterable)، اور map() لاگو ہوتا ہے function کے ہر عنصر کے لئے iterable, واپس کرنا a map آبجیکٹ جس تک رسائی حاصل کی جا سکتی ہے a پر کاسٹ کر کے list.

ہم نے دیکھا ہے کہ اس کا اطلاق فہرستوں پر کیسے کیا جا سکتا ہے، لیکن اس کا اطلاق ڈکٹ پر کیا جا سکتا ہے۔ 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 سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!

ہم استعمال کر سکتے ہیں map() ہوشیار طریقوں سے فنکشن - ایک مثال ایک ہی ان پٹ پر بہت سے افعال کو لاگو کرنا ہے۔

مثال کے طور پر، فرض کریں کہ آپ ایک ایسا API بنا رہے ہیں جو ٹیکسٹ سٹرنگ وصول کرتا ہے، اور آپ اس پر فنکشنز کی فہرست لگانا چاہتے ہیں۔

ہر فنکشن متن سے کچھ فیچر نکالتا ہے۔ جو خصوصیات ہم نکالنا چاہتے ہیں وہ ہیں الفاظ کی تعداد، دوسرا لفظ اور چوتھے لفظ کا چوتھا حرف:

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']

نتیجہ


اس گائیڈ میں، ہم نے اس کی فعالیت کو دریافت کیا ہے۔ lambda Python میں افعال ہم نے اسے دیکھا ہے۔ lambda فنکشنز گمنام فنکشنز ہیں جو دوسرے فنکشنز کے لیے ان لائن فنکشن پیرامیٹر کے طور پر استعمال کیے جاتے ہیں۔ ہم نے استعمال کے کچھ معاملات دیکھے ہیں اور ساتھ ہی ساتھ ان کا استعمال کب نہیں کرنا ہے۔

پروگرامنگ کرتے وقت، ڈونالڈ ناتھ کے اس اقتباس کو ذہن میں رکھنا ضروری ہے: "پروگراموں کا مقصد انسانوں کے ذریعہ پڑھنا ہے اور صرف اتفاق سے کمپیوٹرز کو عمل میں لانا ہے۔" اس بات کو ذہن میں رکھتے ہوئے، lambda فنکشنز ہمارے کوڈ کو آسان بنانے کے لیے ایک مفید ٹول ہیں، لیکن اسے سمجھداری سے استعمال کیا جانا چاہیے۔

ٹائم اسٹیمپ:

سے زیادہ Stackabuse