Lambda در پایتون چیست؟
Lambda یکی از قابلیتهای کاربردی زبان پایتون است
که به ما اجازه میدهد توابع کوتاه و ساده را بدون نوشتن یک تابع
کامل با def ایجاد کنیم.
اگر با توابع در پایتون آشنا باشید، یادگیری Lambda برای شما بسیار ساده خواهد بود.
Lambda در پایتون چیست؟
تابع Lambda یک تابع کوچک و بدون نام است. به همین دلیل به آن گاهی Anonymous Function یا تابع بینام نیز گفته میشود.
ساختار کلی Lambda به شکل زیر است:
در این ساختار:
- lambda: کلمه کلیدی ایجاد تابع Lambda است.
- arguments: ورودیهای تابع هستند.
- expression: عملیاتی است که تابع انجام میدهد.
یک مثال ساده از Lambda
فرض کنید میخواهیم عددی را دو برابر کنیم. با تابع معمولی میتوانیم بنویسیم:
return x * 2
print(double(5))
خروجی:
همین کار را میتوان با Lambda کوتاهتر نوشت:
print(double(5))
خروجی:
Lambda با چند آرگومان
یک Lambda میتواند چند ورودی داشته باشد. برای مثال، جمع دو عدد:
print(add(10, 20))
خروجی:
Lambda با سه آرگومان
میتوانیم حتی چند آرگومان را نیز به Lambda ارسال کنیم.
print(multiply(2, 3, 4))
خروجی:
استفاده از Lambda همراه با شرط
میتوانیم در عبارت Lambda از شرط استفاده کنیم. برای مثال، بررسی کنیم یک عدد زوج است یا فرد.
print(check(8))
print(check(7))
خروجی:
فرد
Lambda و تابع map
یکی از کاربردهای مهم Lambda استفاده از آن همراه با
map() است.
تابع map() یک تابع را روی عناصر یک مجموعه اجرا میکند.
برای مثال، میخواهیم تمام اعداد یک لیست را دو برابر کنیم:
result = list(map(lambda x: x * 2, numbers))
print(result)
خروجی:
map() در پایتون یک شیء map است.
با استفاده از list() میتوانیم نتیجه را به لیست تبدیل کنیم.
Lambda و تابع filter
یکی دیگر از کاربردهای رایج Lambda استفاده همراه با
filter() است.
تابع filter() برای انتخاب عناصر بر اساس یک شرط
استفاده میشود.
برای مثال، فقط اعداد زوج یک لیست را انتخاب میکنیم:
result = list(filter(lambda x: x % 2 == 0, numbers))
print(result)
خروجی:
Lambda در مرتبسازی لیست
یکی از کاربردهای بسیار مفید Lambda، استفاده از آن برای
مرتبسازی دادهها با sorted() است.
فرض کنید یک لیست از تاپلها داریم:
("Ali", 18),
("Sara", 20),
("Reza", 16)
]
اگر بخواهیم دانشآموزان را بر اساس نمره مرتب کنیم:
("Ali", 18),
("Sara", 20),
("Reza", 16)
]
result = sorted(students, key=lambda student: student[1])
print(result)
خروجی:
تفاوت Lambda و def
هر دو روش برای ساخت تابع استفاده میشوند، اما کاربرد آنها یکسان نیست.
- def: برای ساخت توابع کامل و معمولاً پیچیدهتر مناسب است.
- lambda: برای عملیات کوتاه و ساده مناسب است.
- Lambda معمولاً فقط شامل یک expression است.
-
توابع ساختهشده با
defمیتوانند چندین خط کد داشته باشند.
چه زمانی از Lambda استفاده کنیم؟
Lambda زمانی کاربرد زیادی دارد که بخواهیم یک عملیات کوتاه را به عنوان یک تابع در اختیار تابع دیگری قرار دهیم.
برای مثال:
- استفاده همراه با
map() - استفاده همراه با
filter() - مرتبسازی با
sorted() - انجام محاسبات ساده
چه زمانی از Lambda استفاده نکنیم؟
اگر یک تابع پیچیده است یا چند مرحله مختلف دارد،
بهتر است از def استفاده کنیم.
def بنویسیم.
مثال کاربردی
فرض کنید قیمت چند محصول را داریم و میخواهیم 10 درصد به قیمت آنها اضافه کنیم:
new_prices = list(map(lambda price: price * 1.10, prices))
print(new_prices)
خروجی:
برای نمایش نتیجه با دو رقم اعشار میتوانیم از
round() استفاده کنیم:
new_prices = list(
map(lambda price: round(price * 1.10, 2), prices)
)
print(new_prices)
خروجی:
تمرین Lambda در پایتون
تمرین 1:
یک Lambda بنویسید که یک عدد را دریافت کرده و مربع آن را برگرداند.
تمرین 2:
با استفاده از Lambda و map() تمام اعداد زیر را سه برابر کنید:
تمرین 3:
با استفاده از Lambda و filter() فقط اعداد بزرگتر از 10
را از لیست زیر انتخاب کنید:
تمرین 4:
لیست زیر را بر اساس سن مرتب کنید:
("Ali", 25),
("Sara", 20),
("Reza", 30)
]
جمعبندی
Lambda در پایتون روشی کوتاه برای ساخت توابع ساده و بدون نام است.
این توابع معمولاً برای عملیاتهای کوتاه استفاده میشوند و
در کنار توابعی مانند map()، filter()
و sorted() کاربرد زیادی دارند.
اگر تازه شروع به یادگیری پایتون کردهاید، ابتدا توابع پایتون و List Comprehension را یاد بگیرید و سپس سراغ Lambda بروید.
مطالب مرتبط
- آموزش توابع در پایتون
- آموزش List Comprehension در پایتون
- آموزش List در پایتون
- آموزش حلقهها در پایتون
- آموزش شرط if در پایتون
سؤالات متداول
Lambda در پایتون چیست؟
Lambda یک تابع کوتاه و بدون نام است که برای انجام عملیاتهای ساده در پایتون استفاده میشود.
تفاوت Lambda و def چیست؟
def برای ساخت توابع معمولی و کامل استفاده میشود،
در حالی که Lambda بیشتر برای توابع کوتاه و ساده کاربرد دارد.
آیا Lambda میتواند چند آرگومان داشته باشد؟
بله. Lambda میتواند چند آرگومان دریافت کند، اما بدنه آن معمولاً شامل یک expression است.
Lambda بیشتر در کجا استفاده میشود؟
از Lambda میتوان همراه با توابعی مانند
map()، filter() و
sorted() استفاده کرد.