سلام!
توی این مقاله قراره با تابع lambda در پایتون آشنا میشیم که توی پروژه های مختلف خیلی به دردمون میخوره.
اگه بخوایم این تابع رو تعریف کنیم، میتونیم بگیم یه تابع کوچیکه که نیاز به اسمی نداره(ولی میتونه داشته باشه). تازه هرچند تا پارامتر هم که بخوایم میتونیم بهش بدیم :)
با مثال شروع میکنیم:
فرض کنید قراره یه تابعی بنویسیم که عددی دریافت میکنه و دوبرابر اون عدد رو ریترن میکنه. به صورت عادی ما به این شکل مینویسیم:
def double(num):
return num * 2
اسم این تابع، double هست و دو برابر ورودیش(num) رو ریترن میکنه.
خب حالا میخوایم همین کار رو با lambda انجام بدیم.
حالا همین کار ها رو توی کد انجام میدیم تا ببینیم چه شکلی میشه:
double = lambda num: num*2
خب پس همونطور که گفتم، double، نام تابع و num، ورودی تابع هستند. حالا مثل تابع هایی که با def مینوشتیم، تابع رو اجرا میکنیم و ورودی رو بهش میدیم و نتیجه رو پرینت میکنیم:
>>> double = lambda num: num*2
>>> print(double(5))
10
نتیجه مون هم شد 10 که درست هم هست چون 5*2 برابر با 10 میشه!
فرض کنید میخوایم تابعی بنویسیم که 2ورودی دریافت کنه و حاصل جمعشون رو برگردونه. برای این کار، به دریافت دو ورودی برای تابع نیاز داریم و اگه بخوایم این رو با lambda بنویسیم، به این شکل میشه:
x = lambda a, b : a+b
print(x(5, 8))
در اینجا، x اسم تابعمون هست و a, b هم پارامتر های تابع هستند. پس در lambda هم مثل تابع عادی، پارامتر ها رو با ویرگول جدا میکنیم. نتیجه این کد هم 13 میشه که درسته
خب بریم سراغ قسمت بعدی آموزش و lambda رو با تابع map ترکیب کنیم :)
اگه با تابع map آشنایی ندارید، میتونید از این لینک وارد مقاله آموزش تابع map بشید.
خب همونطور که در مقاله تابع map گفتیم، map یه تابع میگیره که اون رو میتونیم lambda بدیم. این کار خیلی چیز پیچیده ای نیست و نیاز به توضیح خیلی زیادی نداره. فرض کنید میخوایم برنامه ای بنویسیم که اعضای لیستمون رو دو برابر کنه (با استفاده از تابع map و تابع lambda)
x = [1, 2, 3]
y = list(map(lambda a: a * 2, x))
print(y)
خب توی اینجا لیستی به نام x داریم که شامل اعداد 1 و 2 و 3 هست. حالا به map تابعی که برای ضرب عدد در 2 هست رو دادیم. بنابراین کل این کد، اعضای لیستمون رو دو برابر میکنه و پرینت میکنه که خروجی هم [2, 4, 6] هست که کاملا درسته :)
خیلی ممنون که با من همراه بودید :)
اگر مشکلی بود حتما در قسمت دیدگاه ها مطرح کنید تا رفعش کنیم.
فعلا!