تابع map در پایتون به عنوان یک ابزار سریع و کارآمد امکان اعمال یک تابع را بر روی تمام اعضای یک مجموعه داده بدون نوشتن حلقه‌های طولانی فراهم می‌کند. در دنیای برنامه نویسی پردازش و تبدیل داده‌ها از اهمیت بسیار بالایی برخوردار است. در برنامه نویسی توسعه‌دهندگان اغلب با سناریوهایی روبرو می‌شوند که باید یک عملیات یکسان را بر روی تمامی عناصر یک مجموعه داده (مانند لیست، تاپل یا رشته) انجام دهند. انجام این کار به روش سنتی و با استفاده از حلقه‌ها منجر به کدهای طولانی و کاهش خوانایی برنامه می‌شود.

آنچه در این مطلب می‌آموزید:

  • با تابع map در پایتون و کاربردهای آن آشنا می‌شوید.

  • سینتکس و خروجی تابع map را به زبان ساده یاد می‌گیرید.

  • مثال‌هایی واقعی برای درک بهتر عملکرد map خواهید دید.

  • روش پردازش همزمان چند لیست با map را می‌آموزید.

  • با کاربردهای map مثل تبدیل نوع و تغییر مقادیر آشنا می‌شوید.

  • فرق map و حلقه for را از نظر خوانایی و کارایی درک می‌کنید.

فهرست مطالب این نوشته
997696

تابع map در پایتون ساده‌ترین و سریع‌ترین راهکار برای پردازش داده‌ها است که در حوزه‌های مختلفی همچون تبدیل نوع داده، پردازش فایل‌های حجیم، اعمال محاسبات ریاضی ساده و سایر موارد کاربرد دارد. بر همین اساس در این مطلب از مجله فرادرس نحوه کار با تابع map همراه با مثال‌های ملموس و قطعه کدهای واقعی آموزش داده خواهد شد. با یادگیری تابع map دریچه جدیدی به دنیای برنامه نویسی تابعی باز خواهید کرد و مهارت کد نویسی خود را ارتقا خواهید داد.

تابع map در پایتون چیست؟

map یکی از توابع داخلی قدرتمند و پرکاربرد زبان پایتون است که به شما امکان می‌دهد تا یک عملیات خاص (در قالب یک تابع تعریف می‌شود) را بر روی تک تک اعضای یک مجموعه داده ( مانند لیست یا دیکشنری) اعمال کنید و نتایج جدید را در قالب یک مجموعه داده جدید دریافت کنید.

به زبان ساده، تابع map همانند یک کارخانه است که یک دستورالعمل (تابع) را بر روی هر محصول (عنصر) از خط تولید (مجموعه داده) اعمال می‌کند و محصولات جدیدی را تحویل می‌دهد.

سینتکس تابع map در پایتون

سینتکس تابع map بسیار ساده است. در ادامه سینتکس تابع map در پایتون آورده شده است.

با توجه به سینتکس ارائه شده در بالا تابع map دو آرگومان به عنوان ورودی دریافت می‌کند.

  • function: تابعی را مشخص می‌کند که بر روی هر کدام از عناصر مجموعه داده اجرا می‌شود.
  • iterables: این آرگومان یک شی قابل پیمایش مانند مجموعه داده، لیست، تاپل و سایر موارد دیگر را مشخص می‌کند.

به این نکته نیز باید اشاره کرد که امکان ارسال بیش از یک مجموعه داده به تابع map وجود دارد. در واقع، تابع مورد نظر می‌تواند به صورت همزمان بر روی عناصر چند مجموعه داده اعمال شود.

آرگومان‌های تابع map در پایتون

خروجی تابع map در پایتون

تابع map به عنوان خروجی یک شی از نوع map برمی‌گرداند که یک «شی قابل پیمایش» (Iterator) است. Iterator در پایتون یک شی قابل پیمایش است که به شما امکان می‌دهد تا عناصر یک مجموعه داده را یکی یکی و به ترتیب دریافت کنید. نکته مهم در خصوص خروجی تابع map در پایتون رفتار lazy آن است که یعنی تا زمانی که این شی را پیمایش نکنید یا به لیست یا تاپل تبدیل نکنید، هیچ عملی بر روی المان‌ها اجرا نمی‌شود. برای درک بهتر خروجی تابع map مثال زیر آورده شده است.

در مثال بالا آرایهnumbers به همراه تابعlambda x: x * 2 به عنوان آرگومان ورودی به تابع map ارسال شده‌اند. با توجه به تابع داده شده انتظار می‌رود که هر کدام از عناصر آرایهnumbers به توان ۲ برسند و مجدد آرایه جدیدی را ایجاد کنند. در صورت تبدیل نکردن خروجی تابع map به لیست، نتیجه زیر در خروجی نمایش داده خواهد شد.

map object at 0x7f8b2c4d5b50

برای مشاهده خروجی باید همانند قطعه کد زیر خروجی تابع map به یک لیست یا تاپل تبدیل شود.

در نهایت خروجی تابع به صورت زیر خواهد بود.

[2, 4, 6, 8]

همچنین، به این نکته باید توجه کرد که متغیرmapped یا همان خروجی تابع map رفتار lazy دارد و یکبار مصرف است. بنابراین، با پیمایش دوباره متغیرmapped دیگر المان‌ها در دسترس نیستند.

این مورد تاثیر زیادی در مصرف بهینه حافظه دارد.

مثالی از دنیای واقعی برای درک خروجی تابع map

خروجی تابع map یک شی از نوع map است که برای مشاهده باید آن را به یک مجموعه داده تبدیل کنید. شاید درک خروجی تابع map کمی دشوار باشد، برای همین منظور مثالی مملوس برای درک بهتر خروجی تابع map آورده شده است.

  • تابع map را مشابه یک دستگاه آبمیوه‌گیری تصور کنید.
  • این دستگاه میوه‌ها (لیست داده ورودی) را دریافت می‌کند، ولی به جای آبمیوه یک لوله خروجی (همان شی map) را تحویل می‌دهد.
  • تا زمانی که یک لیوان (تبدیل به لیست) زیر لوله قرار ندهید، آبمیوه را نخواهید دید.
صفی از داده‌ها با یک تابع یکسان

مثالی از تابع map در پایتون

طبق نکات بیان شده تابع map به عنوان ورودی یک تابع و یک مجموعه داده دریافت می‌کند و این تابع را بر روی تک تک اعضا مجموعه داده اعمال می‌کند. برای استفاده یا مشاهده نتایج نیز باید خروجی تابع map را به لیست، تاپل یا یک مجموعه داده دیگر تبدیل کرد. قطعه کد زیر نحوه استفاده از تابع map را نشان می‌دهد.

در مثال بالا آرایهnums به همراه تابع داخلیstr به تابع map ارسال شده‌اند و خروجی نیز به نوع داده تاپل تبدیل شده است. تابعstr در پایتون نوع داده عددی را به نوع داده رشته‌ای تبدیل می‌کند. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

('1', '2', '3')

یادگیری پایتون با فرادرس

بسیاری از افراد معتقدند که پایتون محبوب‌ترین زبان برنامه نویسی است. پایتون را می‌توان نزدیک‌ترین زبان برنامه نویسی به زبان انسان دانست. یکی از دلایل اصلی محبوبیت پایتون نیز سادگی و سهولت استفاده آن است. علاوه بر این، از کاربردهای گسترده پایتون در حوزه‌های مختلف نیز نمی‌توان به آسانی گذشت. پایتون یک زبان همه‌کاره است که در حوزه‌های مختلفی از توسعه وب و نرم‌افزار گرفته تا هوش مصنوعی و یادگیری ماشین کاربرد دارد.

برای یادگیری پایتون در نخستین گام باید هدف خود را مشخص کنید. بهتر است ابتدا به این سوال پاسخ دهید که «چرا می‌خواهم پایتون را یاد بگیرم؟» پاسخ به این سوال به شما کمک می‌کند تا مسیر یادگیری خود را مشخص کنید. در گام بعدی باید مبانی و مفاهیم اولیه پایتون را یاد بگیرید. برای این منظور ابتدا باید آخرین نسخه پایتون را از سایت رسمی آن دانلود و نصب کنید. سپس، مفاهیمی همچون متغیرها، انواع داده، عملگرها، ساختارهای شرطی، حلقه‌ها و سایر موارد دیگر را یاد بگیرید. در گام بعدی باید پروژه‌های کوچکی برای خود تعریف و با توجه به آموخته‌های خود آن‌ها را پیاده‌سازی کنید.

مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python – مقدماتی تا پیشرفته فرادرس
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python – مقدماتی تا پیشرفته هدایت شوید.

در مسیر یادگیری زبان پایتون یکی از بهترین و مقرون به صرفه‌ترین شیوه‌های آموزش استفاده از فیلم‌های آموزشی آنلاین است. پلتفرم فرادرس به عنوان یکی از پیشروترین مجموعه‌ها در این زمینه با همکاری مدرسین با تجربه اقدام به تهیه فیلم‌های آموزشی موضوع محور و پروژه محور مختلفی در زمینه زبان برنامه نویسی پایتون کرده است. در فرادرس آموزش‌های پایتون در مجموعه فیلم‌های آموزش برنامه نویسی پایتون از مقدماتی تا پیشرفته فرادرس قابل دسترسی هستند که لینک آن در ادامه آورده شده است.

در این مجموعه فیلم‌های آموزشی پایتون در سطوح مختلف از مقدماتی تا پیشرفته منتشر شده‌اند. بنابراین، در هر سطحی که قرار داشته باشید می‌توانید از فیلم‌های آموزشی این مجموعه استفاده کنید. علاوه بر این، فیلم‌های آموزشی پایتون فرادرس به یک حوزه خاص از کاربردهای پایتون محدود نمی‌شوند و تمام حوزه‌های مختلف کاربردهای پایتون را شامل می‌شوند. در ادامه تعدادی از دوره‌های آموزشی موجود در این مجموعه آورده شده است.

آموزش استفاده از تابع map در پایتون به صورت عملی

تابع map در پایتون به عنوان جایگزین حلقه for شناخته می‌شود که می‌تواند یک تابع را بر روی تک تک عناصر یک مجموعه داده اعمال کند. بنابراین، عملکرد بهتری نیز دارد، زیرا تنها تابع را بر روی هر کدام از عناصر اعمال می‌کند. این قابلیت کارایی خود را هنگام پردازش داده‌های بزرگ بیشتر نیز نشان می‌دهد. یکی از بهترین روش‌ها برای یادگیری پایتون پیاده‌سازی پروژه‌ها و دیدن مثال‌های مختلف است که برای این منظور پیشنهاد می‌شود که فیلم آموزش برنامه نویسی پایتون با مثال‌های عملی از فرادرس را مشاهده کنید که لینک آن در ادامه آورده شده است.

در این بخش نحوه کار با تابع map در پایتون به سه روش مختلف همراه با مثال آموزش داده شده است.

روش‌های استفاده از تابع map در پایتون

تابع map در پایتون با تابع لامبدا

اولین آرگومان در تابع map یک تابع است که بر روی تک تک عناصر مجموعه داده اعمال می‌شود. پایتون به ازای هر کدام از عناصر موجود در مجموعه داده یک مرتبه تابع را فراخوانی می‌کند و نتیجه به دست آمده را در قالب یک شی map برمی‌گرداند.

به عنوان اولین آرگومان ورودی تابع map می‌توان از تابع «لامبدا» (Lambda) نیز استفاده کرد. سینتکس استفاده از تابع لامبدا همراه با تابع map به صورت زیر است.

در ادامه تابع لامبدا بر روی لیست زیر اعمال خواهد شد.

قطعه کد زیر تابع لامبدا را بر روی هر یک از عناصر آرایه بالا اعمال می‌‌‌کند.

در مثال بالا تابع لامبدا تعریف شده هر کدام از عناصر موجود در آرایه را به توان ۲ می‌رساند و سپس با عدد ۳ جمع می‌کند. برای مشاهده نتیجه باید از دستور print در پایتون استفاده کرد.

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Output[23, 33, 45, 69, 87, 113]

در مجموع استفاده از تابع لامبدا همراه با تابع map زمانی توصیه می‌شود که پیاده‌سازی عملکرد مورد نظر پیچیدگی زیادی نداشته باشد. به عنوان مثال، برای انجام عملیات ریاضی ساده بر روی عناصر آرایه بهتر است که تابع لامبدا مورد استفاده قرار گیرد.

تابع لامبدا یک روش سریع و ساده برای تعریف تابع در پایتون است که برای آشنایی بیشتر با این نوع توابع می‌توانید مطلب زیر از مجله فرادرس را مطالعه کنید.

تابع map در پایتون با تابع تعریف شده توسط کاربر

همانند توابع لامبدا می‌توان از توابع تعریف شده برای اعمال بر روی یک مجموعه داده قابل پیمایش استفاده کرد. توابع تعریف شده بیشتر برای انجام محاسبات پیچیده مناسب هستند. همچنین، برای ارسال داده به تابع باید از توابع تعریف شده استفاده کرد. برای آشنایی بیشتر با نحوه تعریف تابع در زبان پایتون می‌توانید فیلم آموزش رایگان تابع در زبان برنامه نویسی پایتون از فرادرس را مشاهده کنید که لینک آن در ادامه آورده شده است.

به عنوان مثال در لیست قابل پیمایش زیر هر کدام از عناصر یک دیکشنری هستند که اطلاعاتی در خصوص موجودات آکواریوم را ارائه می‌دهند.

بنا به دلایلی تصمیم گرفته شده است که تمام موجودات آکواریوم به یک مخزن منتقل شوند. بنابراین، باید تمام رکوردها به‌روزرسانی شوند تا همه موجودات به مخزن ۴۲ منتقل گردند. برای این منظور تابع زیر پیاده‌سازی شده است.

یک تابع با نامassign_to_tank() تعریف شده است که پارامترهایaquarium_creatures وnew_tank_number را به عنوان ورودی دریافت می‌کند. این تابع شماره مخزن جدیدی را به تمام عناصر اختصاص می‌دهد. با فراخوانی قطعه کد زیر هدف محقق خواهد شد.

خروجی حاصل از اجرای قطعع کد بالا به صورت زیر خواهد بود.

Output[{'name': 'sammy', 'species': 'shark', 'tank number': 42, 'type': 'fish'}, {'name': 'ashley', 'species': 'crab', 'tank number': 42, 'type': 'shellfish'}, {'name': 'jo', 'species': 'guppy', 'tank number': 42, 'type': 'fish'}, {'name': 'jackie', 'species': 'lobster', 'tank number': 42, 'type': 'shellfish'}, {'name': 'charlie', 'species': 'clownfish', 'tank number': 42, 'type': 'fish'}, {'name': 'olly', 'species': 'green turtle', 'tank number': 42, 'type': 'turtle'}]

با تعریف یک تابع جدید همراه با تابع map در پایتون شماره مخزن جدیدی به عناصر موجود در لیست اختصاص داده شد. در این مثال از نوع داده دیکشنری در پایتون استفاده شد که پیش‌تر در مطلب زیر از مجله فرادرس به صورت کامل همراه با مثال آموزش داده شده است.

تابع map در پایتون با تابع داخلی همراه با چندین آرگومان iterable

زبان برنامه نویسی پایتون مجموعه گسترده‌ای از توابع داخلی دارد که هر کدام کاربرد خاص خود را دارند. می‌توان تابع map در پایتون را با توابع داخلی نیز پیاده‌سازی کرد. به عنوان مثال، تابع داخلیpow() در پایتون دو عدد را به عنوان ورودی دریافت می‌کند و در خروجی نتیجه حاصل از به توان رساندن عدد پایه به توان عدد دیگر را برمی‌گرداند.

برای یادگیری پیاده‌سازی تابع map با توابع داخلی پایتون به مثال زیر توجه کنید. دو آرایه عددی زیر را در نظر بگیرید.

با استفاده از تابع داخلیpow() و تابع map در پایتون قرار است که اعداد موجود در آرایهbase_numbers به توان اعداد موجود در آرایهpowers برسند. سپس، نتیجه حاصل در قالب آرایه جدیدی از اعداد نمایش داده شود.

در قطعه کد بالا تابع map بر روی هر کدام از عناصر موجود در آرایه‌هایbase_numbers وpowers تابع داخلیpow() را اعمال می‌کند. بنابراین، خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Output[2, 16, 216, 4096, 100000]

در مثال بالا تعداد عناصر آرایه‌هایbase_numbers وpowers برابر بود. در صورت برابر نبودن تعداد عناصر دو آرایه عددی تابع map عملیات پیمایش را تا رسیدن به انتهای آرایه انجام می‌دهد.

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Output[2, 16, 216, 4096, 100000]

با توجه به افزایش تعداد عناصر آرایهbase_numbers تابع map فقط تا انتها آرایه دوم پیمایش را انجام می‌دهد.

کاربردهای تابع map در پایتون چیست؟

تابع map یک روش ساده و سریع برای اعمال یک تابع بر روی تک تک عناصر موجود در یک مجموعه داده است. مهم‌ترین کاربردهای تابع map عبارتنداز:

  • اعمال تغییرات ریاضی ساده
  • تبدیل نوع داده‌ها
  • پردازش چند لیست به صورت همزمان
  • ترکیب با توابع از پیش تعریف شده
  • پردازش فایل‌ها و داده‌های حجیم

در ادامه کاربردهای تابع map به همراه قطعه کد و مثال عملی توضیح داده شده‌اند.

کاربردهای تابع map در پایتون

اعمال تغییرات ریاضی ساده

با استفاده از تابع map بدون نیاز به نوشتن حلقه for می‌توان تغییرات مورد نظر را بر روی یک مجموعه داده اعمال کرد. به عنوان مثال، می‌توان تمام اعداد موجود در یک مجموعه را به توان یک عدد دلخواه رساند یا عملیات ریاضی دیگری را بر روی آن‌ها انجام داد.

در مثال بالا تابع map تک تک اعضای موجود در آرایهnums را به توان ۲ می‌رساند. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

[1, 4, 9]

تبدیل نوع داده‌ها

یکی دیگر از کاربردهای خوب تابع map تبدیل اعضای یک لیست به نوعی دیگر است. به عنوان مثال، می‌توان لیستی از اعداد را به رشته یا بالعکس تبدیل کرد.

در ادامه خروجی قطعه کد بالا آورده شده است.

 [10, 20, 30]

در مثال بالا نوع داده عناصر موجود در آرایهwords از رشته به عدد صحیح تغییر پیدا کرده است.

پردازش چند لیست به صورت همزمان

از تابع map در پایتون برای ترکیب داده‌های دو یا چند لیست به صورت همزمان می‌توان استفاده کرد. به عنوان مثال، می‌توان عناصر متناظر در دو لیست را با یکدیگر جمع کرد یا عملیات ریاضی دیگری را بر روی آن‌ها انجام داد.

در مثال بالا عناصر موجود در دو لیستlist1 وlist2 به صورت نظیر به نظیر با یکدیگر جمع می‌شوند و لیست جدیدی را ایجاد می‌کنند.

[5, 7, 9]

ترکیب با توابع از پیش تعریف شده

امکان ترکیب تابع map با سایر توابع تعریف شده وجود دارد. به عنوان مثال، می‌توان یک تابع با عملکردی خاص را تعریف کرد و آن را با تابع map ترکیب کرد.

در مثال بالا تابعadd_tax() به منظور اضافه کردن ۹ درصد مالیات بر قیمت تعریف شده است. این تابع به همراه آرایهprices به تابع map ارسال شده‌اند. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

[1090.0, 2180.0, 3270.0]

پردازش فایل‌ها و داده‌های حجیم

یکی دیگر از کاربردهای مهم تابع map پردازش فایل‌ها و داده‌های حجیم است. تابع map به جای پردازش کل فایل به صورت یکجا آن را خط به خط پردازش می‌کند. بنابراین، حافظه کمتری اشغال می‌کند.

فضای کار مینیمال یک برنامه نویس

شرایطی را تصور کنید که فایل ۲۰ گیگابایتی از اطلاعات سرور دارید که هر خط آن فرمت زیر را دارد.

می‌خواهیم در این فایل میانگین زمان پاسخ‌دهی سرور را فقط برای خطاهای سرور (کد ۵۰۰) محاسبه کنیم. راه‌حل بهینه برای این مسئله با استفاده از تابع map به صورت زیر خواهد بود.

استفاده از تابع map برای پردازش فایل‌های حجیم موجب استفاده کمتر از حافظه، افزایش سرعت و بهبود قابلیت‌های توسعه می‌شود. علاوه بر این، از تابع map می‌توان برای پاک‌سازی داده‌ها CSV، تبدیل فرمت داده‌ها و فشرده‌سازی فایل‌ها به صورت آنی استفاده کرد.

تفاوت تابع map با حلقه for در چیست؟

تفاوت اصلی بین تابع map و حلقه for در پایتون به رویکرد و کاربرد آن‌ها برمی‌گردد. حلقه for در پایتون برای تکرار بر روی عناصر یک لیست یا شی مورد استفاده قرار می‌گیرد و می‌توان هر عملیاتی را با استفاده از آن پیاده‌سازی کرد.

قطعه کد مثالی از کاربرد حلقه for در پایتون را نشان می‌دهد.

در نقطه مقابل، تابع map برای اعمال یک تابع خاص بر روی تمام عناصر یک لیست مورد استفاده قرار می‌گیرد. همان مثال بالا با استفاده از تابع map به صورت زیر پیاده‌سازی خواهد شد.

هر کدام از ساختارهای map و حلقه for بسته به شرایط و نیازهای برنامه باید مورد استفاده قرار گیرند. در ادامه این دو ساختار از نظر ویژگی‌های زیر با یکدیگر مقایسه خواهند شد.

  • خوانایی
  • کارایی
  • خروجی
  • محدودیت‌ها

خوانایی

از نظر خوانایی تابع map کد را خلاصه‌تر و عمل‌گرایانه‌تر می‌کند که در صورت استفاده از تابع لامبدا خوانایی نیز بهبود بیشتری می‌یابد. تابع map بیشتر برای پیاده‌سازی عملیات ساده مناسب است. در نقطه مقابل، حلقه for انعطاف‌پذیری بیشتری دارد و برای پیاده‌سازی عملیات پیچیده (استفاده از ساختارهای شرطی، متغیرهای مختلف و سایر موارد) مناسب‌تر است.

کارایی

از نظر کارایی در نسخه‌های جدید پایتون به دلیل بهینه‌سازی‌های داخلی تابع map عملکرد سریع‌تری نسبت به حلقه for دارد. در خصوص داده‌های کوچک تفاوت سرعت بسیار ناچیز است.

خروجی

تابع map یک شی از نوع map را به عنوان خروجی برمی‌گرداند که باید به لیست یا سایر انواع داده تبدیل شود. در نقطه مقابل، حلقه for نتیجه را به صورت مستقیم در لیست یا یک ساختار دیگر ذخیره می‌کند.

محدودیت‌ها

تابع map فقط برای اعمال یک تابع بر روی عناصر یک مجموعه داده کاربرد دارد و در صورت نیاز به ساختار شرطی یا عملیات‌های جانبی گزینه مناسبی نیست. در نقطه مقابل، حلقه for هیچ محدودیتی ندارد و با استفاده از آن به صورت کامل روی روند اجرا کنترل دارید. به صورت خلاصه تفاوت‌های تابع map در پایتون و حلقه for در جدول زیر آورده شده است.

ویژگی تابع map حلقه for
کاربرد اعمال تابع بر روی تمام عناصر تکرار روی عناصر مجموعه
خوانایی بهتر برای عملیات ساده بهتر برای عملیات پیچیده
سرعت سریع‌تر کندتر
خروجی شی map ساختار دلخواه
انعطاف‌پذیری محدود نامحدود

برای آشنایی بیشتر با حلقه for در پایتون و نحوه استفاده از آن می‌توانید مطلب زیر از مجله فرادرس را مطالعه کنید.

چه زمانی نباید از تابع map در پایتون استفاده کنیم؟

تابع map همیشه بهترین انتخاب نیست و گاهی اوقات باید از آن اجتناب کرد. در ادامه موارد اجتناب از تابع map آورده شده است.

  • وجود شرط
  • عملیات پیچیده
  • نیاز به اندیس عناصر
  • وجود توابع با اثر جانبی
  • کاهش خوانایی کد
  • نیاز به تغییر ساختار داده

برای درک بهتر شرایط ذکر شده در بالا به صورت مختصر به بررسی هر کدام خواهیم پرداخت.

نبایدهای استفاده از تابع map در پایتون

وجود شرط

اگر عملیات مورد نظر قرار است فقط بر روی برخی از عناصر اعمال شود، آنگاه باید از ساختارهای شرطی استفاده کنید. بنابراین، تابع map در این حالت کارایی ندارد. در این شرایط بهتر است از ساختار حلقه for استفاده کنید.

عملیات پیچیده

در صورت پیچیده بودن عملکرد تابع مورد نظر استفاده از تابع map گزینه مناسبی نیست. به عنوان مثال، امکان استفاده از دستورات کنترلی مانندbreak وcontinue در تابع map وجود ندارد. در شرایطی که نیاز است در فرایند پیمایش حلقه متوقف شود یا یکی از مراحل نادیده گرفته شود، بهتر است از حلقه for استفاده کنید.

نیاز به اندیس عناصر

تابع map به صورت پیش‌فرض امکان دسترسی به اندیس عناصر را ندارد. برای دسترسی به اندیس عناصر بهتر است از حلقه for استفاده کنید.

وجود توابع با اثر جانبی

اگر تابع شما چیزی چاپ می‌کند، فایلی را تغییر می‎‌دهد یا متغیرهای خارجی را عوض می‌کند، از تابع map استفاده نکنید. به زبان ساده، اگر در حین پردازش نیاز به انجام کاری مشابه موارد بالا وجود دارد، تابع map مناسب نیست.

کاهش خوانایی کد

اگر استفاده از تابع map خوانایی کد را کاهش می‌دهد، بهتر است از آن استفاده نکنید. استفاده از تابع map بیشتر برای عملیات ساده و تک خطی توصیه می‌شود.

نیاز به تغییر ساختار داده

اگر قصد تغییر ساختار خروجی را دارید، تابع map گزینه مناسبی نیست، زیرا خروجی تابع map همواره به صورت شی map است. نکته طلایی که باید بدانید این است که اگر استفاده از تابع map خوانایی کد را کاهش داد، آنگاه باید از جایگزین‌های دیگر استفاده کنید.

بهترین روش برای یادگیری پایتون چیست؟

روش‌های مختلفی برای یادگیری زبان برنامه نویسی پایتون وجود دارد. یکی از بهترین شیوه‌ها برای افزایش تسلط بر زبان پایتون پیاده‌سازی پروژه‌های عملی با این زبان است. پروژه‌های واقعی به دلیل درگیر کردن شما با چالش‌های برنامه نویسی مهارت حل مسئله شما را بهبود می‌بخشند. در واقع، انجام پروژه‌های واقعی به شما کمک می‌کنند تا مفاهیم تئوری و آموخته‌های خود را در عمل به کار بگیرید و تسلط خود را افزایش دهید.

با توجه به مزایای یادگیری مبتنی بر انجام پروژه در پلتفرم فرادرس آموزش‌های پروژه محور با کیفیتی در زمینه برنامه نویسی پایتون منتشر شده است. این آموزش‌ها با همکاری مدرسین با تجربه و فعال در بازار کار تهیه شده‌اند و شما را از ابتدا در فرایند پیاده‌سازی یک پروژه واقعی قرار می‌دهند. با مشاهده آموزش‌های پروژه محور با چالش‌های پیاده‌سازی، روش حل مسئله، تفکر تحلیلی و مهارت‌های مورد نیاز برای بازار کار بیشتر آشنا خواهید شد. تمامی این آموزش‌ها در مجموعه فیلم‌های آموزش‌ پروژه محور برنامه نویسی پایتون قابل دسترسی هستند که لینک آن در ادامه آورده شده است.

در این مجموعه آموزش‌های پروژه محور متعددی در سطوح مختلف یادگیری از مقدماتی تا پیشرفته و در حوزه‌های مختلف کاربرد پایتون از طراحی اپلیکیشن و نرم‌افزار گرفته تا طراحی وب و یادگیری ماشین قابل دسترسی هستند. در ادامه تعدادی از دوره‌های آموزشی موجود در این مجموعه آورده شده است.

مجموعه فیلم‌های آموزش پروژه محور برنامه نویسی پایتون فرادرس
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه آموزش پروژه محور برنامه نویسی پایتون هدایت شوید.

جمع‌بندی

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

در این مطلب سعی شد تا کاربردها و نحوه استفاده از تابع map در قالب مثال‌های عملی آموزش داده شود. همچنین، در بخشی دیگر تابع map و حلقه for از منظرهای مختلف با یکدیگر مقایسه شدند. در ادامه نیز چند نکته مهم در خصوص استفاده از تابع map مطرح شد.

source

توسط expressjs.ir