map و filter در پایتون چیست؟
در پایتون توابعی وجود دارند که به ما کمک میکنند روی مجموعهای از دادهها عملیات انجام دهیم یا فقط دادههای موردنظرمان را انتخاب کنیم. دو مورد مهم از این توابع، map() و filter() هستند.
در این آموزش یاد میگیریم که map و filter چگونه کار میکنند و چطور میتوانیم آنها را در کنار lambda استفاده کنیم.
تابع map در پایتون چیست؟
تابع map() یک تابع را روی تمام عناصر یک مجموعه مانند لیست اجرا میکند و نتیجه را برمیگرداند.
به زبان ساده، اگر بخواهیم یک عملیات مشخص را روی تمام اعضای یک لیست انجام دهیم، map میتواند کار ما را سادهتر کند.
ساختار map
پارامتر اول تابعی است که باید روی عناصر اجرا شود و پارامتر دوم مجموعهای مانند list یا tuple است.
یک مثال ساده از map
فرض کنید لیستی از اعداد داریم و میخواهیم همه آنها را دو برابر کنیم.
map object برمیگرداند.
برای مشاهده نتیجه به صورت لیست میتوانیم از list() استفاده کنیم.
استفاده از map با یک تابع معمولی
الزاماً لازم نیست از lambda استفاده کنیم. میتوانیم یک تابع معمولی تعریف کنیم و آن را به map بدهیم.
استفاده از map برای تبدیل دادهها
یکی از کاربردهای مهم map تبدیل دادهها است. برای مثال میتوانیم چند رشته را به عدد صحیح تبدیل کنیم.
تابع filter در پایتون چیست؟
تابع filter() برای فیلتر کردن دادهها استفاده میشود. یعنی از بین عناصر یک مجموعه، فقط مواردی را انتخاب میکند که یک شرط مشخص را برقرار کنند.
ساختار filter
تابعی که به filter میدهیم باید برای هر عنصر یک نتیجه
True یا False تولید کند.
یک مثال ساده از filter
فرض کنید میخواهیم فقط اعداد بزرگتر از 10 را از یک لیست انتخاب کنیم.
filter با تابع معمولی
مانند map، در filter نیز میتوانیم از یک تابع معمولی استفاده کنیم.
تفاوت map و filter چیست؟
map: روی عناصر عملیات انجام میدهد و معمولاً مقدار جدید تولید میکند.
filter: عناصر را بر اساس یک شرط انتخاب میکند.
برای مثال:
نتیجه map شامل مقادیر تغییر دادهشده است، در حالی که filter فقط عناصر موردنظر را نگه میدارد.
ترکیب map و filter
یکی از کاربردهای جالب این دو تابع، استفاده از آنها در کنار یکدیگر است.
فرض کنید ابتدا میخواهیم فقط اعداد زوج را انتخاب کنیم و سپس آنها را دو برابر کنیم.
ابتدا اعداد زوج انتخاب شدند:
سپس هر کدام دو برابر شدند:
مثال کاربردی: فیلتر کردن قیمتها
فرض کنید قیمت چند محصول را داریم و میخواهیم محصولاتی را پیدا کنیم که قیمت آنها بیشتر از 100 باشد.
مثال کاربردی با map و filter
حالا فرض کنیم ابتدا قیمتهای بیشتر از 100 را انتخاب کنیم و سپس 10 درصد به آنها اضافه کنیم.
map و filter روی رشتهها
این توابع فقط برای اعداد نیستند و میتوانیم روی رشتهها نیز از آنها استفاده کنیم.
مثال map با رشتهها
مثال filter با رشتهها
map و filter چه زمانی مفید هستند؟
این توابع زمانی مفید هستند که بخواهیم روی مجموعهای از دادهها عملیات مشخصی انجام دهیم یا دادهها را بر اساس یک شرط انتخاب کنیم.
- تبدیل چندین مقدار به صورت یکجا
- فیلتر کردن اطلاعات
- پردازش دادهها
- کار با لیستها
- استفاده همراه با lambda
- پردازش دادهها در پروژههای واقعی
تفاوت map، filter و List Comprehension
در پایتون برای انجام بسیاری از این کارها میتوانیم از List Comprehension نیز استفاده کنیم.
در بسیاری از پروژهها List Comprehension خوانایی خوبی دارد، اما map و filter نیز ابزارهای مهمی هستند و آشنایی با آنها برای یادگیری پایتون و خواندن کدهای دیگران مفید است.
برای یادگیری بیشتر میتوانید درس List Comprehension در پایتون را نیز مطالعه کنید.
نکته مهم درباره map و filter
نکته:
خروجی map و filter مستقیماً یک لیست نیست.
آنها یک iterator-like object برمیگردانند که میتوانیم
با list() آن را به لیست تبدیل کنیم.
برای مشاهده عناصر:
تمرینهای map و filter
تمرین ۱
با استفاده از map تمام اعداد زیر را سه برابر کنید:
تمرین ۲
با استفاده از filter فقط اعداد فرد را از لیست زیر انتخاب کنید:
تمرین ۳
با استفاده از filter نامهایی را انتخاب کنید که بیشتر از 4 حرف دارند:
تمرین ۴
با ترکیب filter و map، ابتدا اعداد زوج را انتخاب کنید و سپس آنها را به توان 2 برسانید:
جمعبندی
در این آموزش با دو تابع مهم map() و filter() آشنا شدیم.
- map() برای اعمال یک عملیات روی عناصر استفاده میشود.
- filter() برای انتخاب عناصر بر اساس یک شرط استفاده میشود.
- هر دو تابع را میتوان همراه با lambda استفاده کرد.
- میتوان map و filter را با یکدیگر ترکیب کرد.
- برای مشاهده نتیجه میتوان از
list()استفاده کرد.
این دو تابع در پردازش دادهها و پروژههای پایتونی کاربرد زیادی دارند.
درسهای مرتبط
سوالات متداول
تابع map در پایتون چیست؟
map یک تابع را روی عناصر یک iterable اجرا میکند و نتیجه را به صورت یک map object برمیگرداند.
تابع filter در پایتون چیست؟
filter برای انتخاب عناصری استفاده میشود که یک شرط مشخص را برقرار میکنند.
آیا map و filter با lambda استفاده میشوند؟
بله. استفاده از map و filter همراه با lambda یکی از کاربردهای رایج این توابع است.
تفاوت map و filter چیست؟
map روی دادهها عملیات انجام میدهد و مقدار جدید تولید میکند، در حالی که filter دادهها را بر اساس یک شرط انتخاب میکند.