سوال در مورد توابع بی نام lambda

پرسیده شده
فعالیت 11 روز پیش
دیده شده 31 بار
0

سلام و درود و وقت بخیر 

من وقتی این خط را مینویسم . . . 

lambda team :  2 * 2

چجوری باید صداش بزنیم و چاپ بکنیمش؟؟؟ 

اینجوریه. . . 

lambda
یا 
lambda(team)

سوال دومم : 

در اینجا  t چکار انجام میده چرا آخه t چرا team رو استاد ننوشتند؟؟؟

passed_teams = list(filter(lambda t: t['score'] >= 50 , score_board))

 

فایل پیوست

محمدرضا مجیدی
محمدرضا مجیدی

14 اردیبهشت 00

0
حذف شده

سلاااااااااااااااااااام و دروووووود

ظهرتون بخیر

همونطور که میدونیم lambda یه تابع بی نام برامون میسازه. دستور نوشتاری (syntax) lambda اینطوریه:

lambda arguments : expression
lambda a, b: a*b
(lambda a, b: a*b)(2, 4)
multiple = lambda a, b: a*b
print(multiple(2, 4))

بعد از کلمه lambda آرگومان های ورودی تابع رو مشخص میکنیم. و بعد از دو نقطه ‘:’ یه expression داریم. که نتیجه اون expression رو بهم بر میگردونه.

برای تابع lambda هر تعداد آرگومان ورودی بخواهیم میتونیم مشخص کنیم. بدنه تابع مون یه expression بیشتر نمیتونه باشه.

 

اگر میخواهی تابع بی نام lambda رو بعدا صداش کنی باید اینطور بهش اسم بدی و صداش کنی:

function_name = lambda team :  2 * 2
function_name(team=10)
function_name(10)

که البته تو تابع بالا از متغیر team داخل تابع استفاده نکردیم.

 

جواب سوال دوم)

passed_teams = list(filter(lambda t: t['score'] >= 50 , score_board))

تو کد بالا استاد میخواسته با استفاده از تابع filter اون تیم هایی که امتیازشون بیشتر از ۵۰ هست رو فیلتر کنه.

داخل متغیر score_board یه لیستی از دیکشنری ها رو داخل داریم. تابع فیلتر تک تک دیکشنری هایی که داخل لیست score_board داریم رو به عنوان ورودی به تابع lambda میده و اسم اون دیکشنری میشه t و داخل تابع lambda این شرط رو چک میکنیم که امتیاز اون تیم آیا بیشتر از ۵۰ هست یا نه. نتیجه تابع lambda مقدار True یا False عه.

در واقع اینجا به اون دیکشنری هایی که به lambda پاس داده شدن استاد اسم t رو داده میتونسته هر اسم دیگه ای بده مثل team یا super_team یا هر اسم دیگه ای.

 

امیدوارم جواب سوالاتت رو واضح داده باشم. باز اگر سوالی داشتی در خدمتم :)

 

منابع خوب:

https://realpython.com/python-lambda/#anonymous-functions

https://www.w3schools.com/python/python_lambda.asp

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

14 اردیبهشت 00

جلسه توابع map، filter و آشنایی با توابع بی‌نام در پایتون