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

خب سلام

اولین پست توی ویرگول , بریم که یاد بدیم مپ و فیلتر چی هستن و نحوه استفاده اونها در پایتون

در اولین گام بگم که کار مپ و فیلتر تابع هستند ( فانکشن , متد ) و کار هر دو یکیه ولی با خروجی متفاوت

خب کاری مپ و فیلتر میکنن اینه که یک تابع دیگه ( که باید ورودی و خروجی داشته باشه ) بر روی اجزای یک لیست تست میکنه | خب یعنی چی حالا ؟ فرض کنیم یک لیست داریم با چندین اعضا , مپ میاد عنصر اول لیست رو به عنوان ورودی فانکشنی که شما تعیین کردید میده و اینکار رو به تعداد اعضای لیست انجام میده

خب فیلتر هم همین کار رو میکنه ولی تفاوت این دو توی چی هست ؟

مپ میاد خروجی فانکشن شمارو که ممکنه هر چیزی باشه ( رشته , عدد , مقدار منطقی ) به عنوان خروجی خود تابع مپ میده , ولی تابع فیلتر میاد مقدار منطقی خروجی فانکشن میده

خب بریم سراغ کد و نحوه نوشتنشون :

مپ
مپ

خروجی کد بالا :

1[ 0, 4, 9, 7225, 3136, 6724, 9409, 16, 29871209287936, 2025 ]

خب دیدیم که تمامی اجزای List به توان 2 رسیدن

برای تعریف بهتر میتونیم بگیم ‘ مپ و فیلتر ‘ جایگزین بهتری برای فور هست

و حالا فیلتر , فیلتر مثل if هست ما در تابع خودمون یک مقدار شرطی مینویسیم و فیلتر میاد مثل الک و نه قیف ( نمیدونم چرا هر مدرسی میاد از قیف استفاده میکنه به جای الک , کار الک اینه که نزاره موارد بزرگ رد بشن ولی قیف همه چی میریزه ) و فیلتر میاد مثل الک اون هایی اون پارامتر هایی که وارد فانکشن شدن و مقدار خروجی True بود رو برگردونه

خب توی عکس زیر میبینیم که چطوری نوشته میشه

فیلتر
فیلتر
برای شما

خروجی :

1[ 0, 2, 56, 82, 4, 5465456 ]

خب اینم از فیلتر و مپ ولی یک مورد ریز مونده که بگم کد های بالا توی تعریف فانکشن غلط بود

روش بهتر , معقولانه تر چیه ؟ اینجوری بگم که ما مثلا فقط یه بار نیازه از این فانکشن استفاده کنیم

چرا خطوط بیشتری بنویسیم ؟ راه حل استفاده از سینتکس lambda هست

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

نحوه تعریف متد های لمبدا :

1Functions_name = lambda args : 452 * 354354 *  args

اول کلید واژه lambda مینویسیم بعدش متغیر های وروردی رو مینویسم , بعد یه : میزاریم و دستورات و یا مقدار شرطی مینویسیم

خب حالا توی Map & Filter چطوری از لمبدا استفاده کنیم ؟ به صورت زیر

مپ :

1OutputOfMap = list(map(lambda args : args * args  , List))

فیلتر :

1OutputOfFilter = list(filter(lambda args : args % 2 == 0 ,List))

نکات :

  • اگر توی مپ از مقدار شرطی استفاده کنیم خروجی True و False خواهد بود
  • اگر توی فیلتر از دستورات غیر شرطی استفاده کنیم مقادیر هیچ تغییری نمیکنن
  • در توابع لمبدا نیازی به نوشتن return نیست چون به صورت خودکار مقادیر بازگشت داده میشن
  • مپ و یا فیلتر باید درون تابع ()list نوشته شده باشند تا به مقادیر بازگشتی دسترسی داشت

خب همونطور که قول دادم اینم لینک سورس :

https://nekobin.com/waqahijipe.py

نویسنده مطلب: Misano

منبع مطلب

به فکر سرمایه‌گذاری هستی؟

با هر سطحی از دانش در سریع‌ترین زمان با آموزش گام به گام، سرمایه گذاری را تجربه کن. همین الان میتونی با لینک زیر ثبت نام کنی و ۱۰ درصد تخفیف در کارمزد معاملاتی داشته باشی

ثبت نام و دریافت جایزه
ممکن است شما بپسندید
نظر شما درباره این مطلب

آدرس ایمیل شما منتشر نخواهد شد.