توابع لامبدا در پایتون – نحوه استفاده از لامبدا با نقشه، فیلتر و کاهش
در این آموزش، جنبههای مختلف توابع لامبدا در پایتون، از جمله نحو، موارد استفاده و محدودیتهای آنها را تحلیل خواهیم کرد.
با درک نحوه استفاده موثر از توابع لامبدا، می توانید کد پایتون مختصر و کارآمدتری بنویسید. این مهارت های برنامه نویسی شما را افزایش می دهد و پایگاه کد شما را تمیزتر و مدیریت آن را آسان تر می کند.
فهرست مطالب:
نحو تابع لامبدا و کاربردهای اساسی
راه های فراخوانی توابع لامبدا
- اختصاص دادن به یک متغیر
- فراخوانی مستقیم تابع لامبدا
- استفاده به عنوان یک استدلال برای توابع مرتبه بالاتر
توابع لامبدا در پایتون چیست؟
در پایتون، تابع لامبدا یک تابع کوچک و ناشناس است که با استفاده از کلمه کلیدی lambda
تعریف می شود.
این توابع معمولاً برای عملیاتهای کوتاه و دور ریختنی استفاده میشوند که ممکن است تعریف کامل عملکرد بیش از حد باشد. آنها ناشناس نامیده می شوند زیرا نیازی به نام ندارند (اگرچه می توان آنها را برای استفاده مجدد به یک متغیر اختصاص داد).
توابع لامبدا در سناریوهایی که به یک تابع سریع و ساده برای مدت کوتاهی نیاز دارید برتری مییابند و تعریف کامل تابع بیش از حد است. این آنها را برای عملیاتی که ساده هستند و می توان در یک خط نوشت، ایده آل می کند، مانند محاسبات ساده ریاضی یا تبدیل داده های اساسی.
آنها به ویژه در زمینه های برنامه نویسی تابعی با توابع مرتبه بالاتر مانند map
، filter
و reduce
در جایی که اغلب به عنوان آرگومان ارسال می شوند استفاده می شوند. فقط به یاد داشته باشید که برای عملیات پیچیده تر، توابع منظم به دلیل خوانایی و قابلیت نگهداری ترجیح داده می شوند.
نحو تابع لامبدا و کاربردهای اساسی
lambda arguments: expression # to give it a name, assign it to a variable: function_name = lambda arguments: expression # this is equivalent to: def function_name(arguments): return expression
برخلاف توابع منظم تعریف شده با def
، توابع لامبدا به دلیل طراحی ساده و مختصر به یک عبارت محدود می شوند. آنها می توانند آرگومان های منفرد یا چندگانه بگیرند، اما نمی توانند شامل عبارات یا عبارت های متعدد باشند.
توابع لامبدا برای عملیات کوتاه و ساده ای هستند که می توانند در یک خط نوشته شوند.
مثال:
اگرچه توابع لامبدا فقط می توانند شامل یک عبارت باشند، اما هنوز می توانیم کارهای زیادی با آنها انجام دهیم.
به عنوان مثال، در اینجا یک تابع Lambda برای به هم پیوستن 2 رشته و تبدیل آنها به حروف بزرگ وجود دارد:
راه های فراخوانی توابع لامبدا
در اصل سه راه برای استفاده یا فراخوانی توابع لامبدا وجود دارد:
1. اختصاص دادن به یک متغیر
تابع لامبدا را به یک متغیر اختصاص دهید و سپس آن را با استفاده از آن متغیر فراخوانی کنید:
2. فراخوانی مستقیم تابع لامبدا
با قرار دادن تعریف در پرانتز و ارائه مستقیم آرگومان ها، تابع لامبدا را تعریف و بلافاصله فراخوانی کنید:
3. استفاده به عنوان یک استدلال برای توابع مرتبه بالاتر
توابع لامبدا اغلب به عنوان آرگومان برای توابع مرتبه بالاتر مانند map
، filter
و reduce
استفاده می شوند.
اینها توابعی هستند که توابع دیگری را به عنوان آرگومان می گیرند. آنها در پردازش مجموعه داده ها (مانند فهرست ها یا تاپل ها) در یک سبک برنامه نویسی تابعی کمک می کنند.
استفاده از توابع لامبدا با map()
تابع map
یک تابع مشخص را برای هر مورد در یک تکرار (مانند یک فهرست ) اعمال می کند و یک تکرار جدید را با آیتم های به روز شده برمی گرداند.
# syntax map(function, iterable)
function
در اینجا یک آرگومان می گیرد و مقداری را برمی گرداند.
عناصر iterable (به عنوان مثال، list
، tuple
) به تابع ارسال می شود.
مثال:
توضیح: در این کد از یک تابع لامبدا برای تعریف یک تابع کوچک و ناشناس استفاده می کنیم که هر جفت اعداد را گرفته و ضرب آنها را چاپ می کند.
تابع map
این تابع لامبدا را برای هر جفت (جفت) در فهرست اعمال می کند. قرار دادن تماس map
با list
، اجرای تابع لامبدا را برای هر جفت تضمین می کند. در نتیجه، کد نتایج ضرب را برای هر جفت در فهرست چاپ می کند و خروجی هایی مانند "2 * 3 = 6"، "4 * 5 = 20" و "6 * 7 = 42" را نشان می دهد.
استفاده از توابع لامبدا با filter()
تابع filter
عناصر را در یک تکرار بر اساس یک محمول مشخص فیلتر می کند. فقط عناصری که گزاره برای آنها True
برمی گرداند در تکرارپذیر جدید گنجانده می شوند.
# syntax filter(predicate, iterable)
Predicate تابعی است که یک آرگومان می گیرد و یک مقدار بولی (True یا False) برمی گرداند. عناصر تکرار شونده در اینجا توسط گزاره آزمایش خواهند شد.
مثال:
توضیح: در این کد با فهرست ی از سنین شروع می کنیم. ما از یک تابع لامبدا برای تعریف یک شرط ساده استفاده می کنیم که تحلیل می کند آیا سن 18 سال یا بیشتر است.
تابع filter
این تابع لامبدا را برای هر سنی در فهرست اعمال میکند و سنین زیر 18 سال را فیلتر میکند. با تبدیل نتیجه filter
به یک فهرست ، فهرست ی از سنین 18 و بالاتر را به دست میآوریم. در نهایت، این فهرست فیلتر شده را چاپ می کنیم که در نتیجه سن های [25, 30, 18, 42, 50, 22, 19]
نمایش داده می شود، زیرا این سنین دارای معیار 18 یا بیشتر هستند.
استفاده از توابع لامبدا با reduce()
تابع reduce
یک تابع مشخص را به عناصر یک تکرار شونده به صورت تجمعی اعمال می کند تا آنها را به یک مقدار کاهش دهد. بخشی از ماژول functools
است.
# syntax from functools import reduce reduce(function, iterable)
در اینجا، Function دو آرگومان می گیرد و یک مقدار واحد را برمی گرداند. عناصر تکرار شونده توسط تابع پردازش خواهند شد.
مثال:
توضیح: در این کد با فهرست ی از اعداد شروع می کنیم. ما از تابع reduce
از ماژول functools
برای محاسبه مجموع اعداد موجود در فهرست استفاده می کنیم. ما از یک تابع لامبدا برای تعریف یک عملیات جمع ساده استفاده می کنیم که دو آرگومان x
و y
را می گیرد و مجموع آنها را برمی گرداند. تابع reduce
، این تابع لامبدا را به صورت تجمعی برای موارد موجود در فهرست اعمال می کند، از جفت اول شروع می شود و تا کل فهرست ادامه می یابد، مانند این:
در ابتدا x
اولین عنصر فهرست (1) و y
عنصر دوم (2) است که نتیجه آن 3 است.
سپس این مجموع (3) تبدیل به x
می شود و عنصر بعدی در فهرست (3) تبدیل به y
می شود و عدد 6 را به دست می دهد.
این روند تا زمانی ادامه می یابد که تمام عناصر موجود در فهرست جمع شوند. در نهایت، نتیجه نهایی 15 است که نشان دهنده مجموع تمام اعداد در فهرست است [1، 2، 3، 4، 5].
موارد استفاده اضافی
توابع لامبدا همچنین می توانند در مرتب سازی یا سایر زمینه های برنامه نویسی کاربردی استفاده شوند. مثلا:
مرتب سازی فهرست رشته ها:
در این کد فهرست ی به نام cities
داریم که شامل نام شهرهای مختلف می باشد. ما از تابع sorted
برای مرتب کردن نام این شهرها بر اساس حروف الفبا استفاده می کنیم و حساسیت حروف کوچک و بزرگ را نادیده می گیریم. پارامتر key
در تابع sorted
به ما اجازه می دهد تا یک تابع (در این مورد، یک تابع لامبدا) را برای سفارشی کردن ترتیب مرتب سازی مشخص کنیم.
تابع lambda lambda city: city.lower()
نام هر شهر را قبل از مرتب سازی به حروف کوچک تبدیل می کند. این تضمین میکند که مرتبسازی به حروف بزرگ و کوچک حساس نیست، پس شهرهایی با حروف بزرگ متفاوت یکسان رفتار میکنند.
پس از مرتب سازی، فهرست مرتب شده به متغیر sorted_cities
اختصاص داده می شود و نتیجه را چاپ می کنیم. خروجی فهرست مرتبشده شهرها را نشان میدهد: ['America', 'Germany', 'India', 'Japan']
، که در آن شهرها بر اساس حروف الفبا مرتب شدهاند و حروف را نادیده میگیرند.
توابع لامبدا در درک فهرست :
توابع لامبدا را می توان در درک فهرست برای اعمال یک تابع به هر عنصر در فهرست استفاده کرد.
مثال:
نتیجه
توابع لامبدا در پایتون راهی سریع و مختصر برای ایجاد توابع کوچک و دور ریختنی ارائه میکنند. آنها به ویژه در برنامه نویسی عملکردی با توابع درجه بالاتر مانند map
، filter
و reduce
مفید هستند.
در حالی که توابع لامبدا قدرتمند و مختصر هستند، مطمئن شوید که استفاده از آنها را با خوانایی کد و قابلیت نگهداری متعادل می کنید. برای منطق پیچیده تر، توابع منظم تعریف شده با def
ترجیح داده می شوند زیرا از عبارات و عبارات متعدد پشتیبانی می کنند و شما می توانید مستندات را نیز اضافه کنید.
با درک و استفاده موثر از توابع لامبدا، می توانید کد پایتون مختصر و کارآمدتری بنویسید.
ارسال نظر