💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ محمدرضا مجیدی
سوال در مورد توابع بی نام lambda
محمدعلی رضا حل شده توسط محمدعلی رضا

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

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

lambda team :  2 * 2

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

اینجوریه. . . 

lambda
یا 
lambda(team)

سوال دومم : 

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

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

 

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

ظهرتون بخیر

همونطور که میدونیم 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

بهترین پاسخ
محمدعلی رضا ۱۴ اردیبهشت ۱۴۰۰، ۰۹:۵۸