Map & Filter in Python | مپ و فیلتر در پایتون

Map & Filter in Python | مپ و فیلتر در پایتون


خب سلام اولین پست توی ویرگول , بریم که یاد بدیم مپ و فیلتر چی هستن و نحوه استفاده اونها در پایتوندر اولین گام بگم که کار مپ و فیلتر تابع هستند ( فانکشن , متد ) و کار هر دو یکیه ولی با خروجی متفاوتخب کاری مپ و فیلتر میکنن اینه که یک تابع دیگه ( که باید ورودی و خروجی داشته باشه ) بر روی اجزای یک لیست تست میکنه | خب یعنی چی حالا ؟ فرض کنیم یک لیست داریم با چندین اعضا , مپ میاد عنصر اول لیست رو به عنوان ورودی فانکشنی که شما تعیین کردید میده و اینکار رو به تعداد اعضای لیست انجام میده خب فیلتر هم همین کار رو میکنه ولی تفاوت این دو توی چی هست ؟ مپ میاد خروجی فانکشن شمارو که ممکنه هر چیزی باشه ( رشته , عدد , مقدار منطقی ) به عنوان خروجی خود تابع مپ میده , ولی تابع فیلتر میاد مقدار منطقی خروجی فانکشن میده لینک سورس رو اخر مقاله میزارمخب بریم سراغ کد و نحوه نوشتنشون :مپخروجی کد بالا :[ 0, 4, 9, 7225, 3136, 6724, 9409, 16, 29871209287936, 2025 ]خب دیدیم که تمامی اجزای List به توان 2 رسیدنبرای تعریف بهتر میتونیم بگیم ‘ مپ و فیلتر ‘ جایگزین بهتری برای فور هستو حالا فیلتر , فیلتر مثل if هست ما در تابع خودمون یک مقدار شرطی مینویسیم و فیلتر میاد مثل الک و نه گیف ( نمیدونم چرا هر مدرسی میاد از گیف استفاده میکنه به جای الک , کار الک اینه که نزاره موارد بزرگ رد بشن ولی گیف همه چی میریزه ) و فیلتر میاد مثل الک اون هایی اون پارامتر هایی که وارد فانکشن شدن و مقدار خروجی True بود رو برگردونه خب توی عکس زیر میبینیم که چطوری نوشته میشه فیلترخروجی :[ 0, 2, 56, 82, 4, 5465456 ]خب اینم از فیلتر و مپ ولی یک مورد ریز مونده که بگم کد های بالا توی تعریف فانکشن غلط بود روش بهتر , معقولانه تر چیه ؟ اینجوری بگم که ما مثلا فقط یه بار نیازه از این فانکشن استفاده کنیم چرا خطوط بیشتری بنویسیم ؟ راه حل استفاده از سینتکس lambda هست لمبدا یه نوع سینتکس برای تعریف متد ها هست که توی برخی زبان ها وجود داره نحوه تعریف متد های لمبدا : Functions_name = lambda args : 452 * 354354 *  argsاول کلید واژه lambda مینویسیم بعدش متغیر های وروردی رو مینویسم , بعد یه : میزاریم و دستورات و یا مقدار شرطی مینویسیم خب حالا توی Map & Filter چطوری از لمبدا استفاده کنیم ؟ به صورت زیرمپ :OutputOfMap = list(map(lambda args : args * args  , List))فیلتر :OutputOfFilter = list(filter(lambda args : args % 2 == 0 ,List))نکات :اگر توی مپ از مقدار شرطی استفاده کنیم خروجی True و False خواهد بود اگر توی فیلتر از دستورات غیر شرطی استفاده کنیم مقادیر هیچ تغییری نمیکنن در توابع لمبدا نیازی به نوشتن return نیست چون به صورت خودکار مقادیر بازگشت داده میشنمپ و یا فیلتر باید درون تابع ()list نوشته شده باشند تا به مقادیر بازگشتی دسترسی داشت خب همونطور که قول دادم اینم لینک سورس :https://nekobin.com/waqahijipe.py

منبع

Author: admin

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *