ماجراجوی بیباک ایده ها
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
مطلبی دیگر از این انتشارات
برنامه هایی که با زبان پایتون نوشته شده اند
مطلبی دیگر از این انتشارات
بهترین نرمافزار برای آموزش برنامه نویسی به کودکان کدام است؟
مطلبی دیگر از این انتشارات
دانلود رایگان آموزش شروع کار با گیت و گیت هاب یودمی