در حال بارگزاری

آموزش تابع map در پایتون (python) + ترکیب با تابع lambda

شما اینجا هستید:
آموزش تابع map در پایتون (python) + ترکیب با تابع lambda

آموزش تابع map در پایتون (python) + ترکیب با تابع lambda

در این آموزش تابع map در پایتون رو به صورت کامل و با مثال و تمرین آموزش میدیم! در مثال دوم هم این تابع رو با تابع lambda در پایتون مخلوط می‌کنیم تا مفیدتر باشه! در نهایت یک تمرین هم برای یادگیری بیشتر (با جواب) برای شما قرار دادیم!

بذارید با مثال این آموزش رو پیش ببریم!

مثال 1

فرض کنید یک لیست داریم به اسم x و به صورت زیر:

x=[1,2,3]

و فرض کنید که قراره همه مولفه‌های این لیست رو ضربدر در 2 کنیم!

علی‌الحساب، بیاید تابع زیر که برای 2 برابر کردن هست رو تعریف کنیم! (اسم تابع رو گذاشتیم double به معنی دووووبل کردن، دوبرابر کردن! هر اسم دیگه‌ای هم می‌تونستید بذارید، مثل Sajjad مثلاً!!)

def double(a):
    return a*2

اگر تابع تعریف کردن در پایتون رو بلد نیستید، به آموزش زیر مراجعه کنید!

آموزش تعریف تابع در پایتون (python)

خب حالا بریم سراغ اصل کار

قطعه کد زیر رو در نظر بگیرید، تا من خط به خط توضیحش بدم!

x=[1,2,3]
y=list(map(double, x))
print(y)

در خط 1 که همون لیست خودمون رو وارد کردیم!

در خط 2، یه چندتا بخش داره که سعی می‌کنم جداگانه توضیح بدم! به بخش زیر دقت کنید!

map(double, x)

این قسمت میاد تابع double (که کارش دو برابر کردن بود!) رو روووی عناصر لیستِ x پیاده می‌کنه!

در زبان انگلیسی map یعنی نگاشت کردن، تصویر کردن [البته یکی از معنی‌هاش اینه!] عملاً داریم تابع double رو روووی عناصر لیستِ x نگاشت می‌کنیم (تصویر می‌کنیم/اِعمال می‌کنیم یا هر جووور دیگه و با هر ادبیات دیگه که حال می‌کنید برای خودتون بگید!)

تذکر: اگر بجای double در دستور فوق، به صورت زیر بنویسید، مطمئن باشید با خطا مواجه می‌شید!

double()

یعنی اگر پرانتز بذارید، خطا روووو شاخشه! و قطعاً خطا دریافت می‌کنید!

داشتم توضیح میدادم که یهو مجبور شدم، حاشیه برم! بریم سراغ توضیح خودمون! پس اون map، میاد تابع دوبرابر کردن رو روووی عناصر x اِعمال می‌کنه! اما خروجی این تابع map خیلی واسه ما قابل دیدن نیست [دلیلش رو کمی جلوتر می‌گم!]. برای همین مجبوریم خروجی این بنده‌خدا رو بدیم به تابع list تا بیاد به لیست تبدیلش کنه، تا بتونیم یه سری چیز میز ببینیم حداقل!

حالا چرا خروجی map قابل دیدن نیست؟! در ادامه توضیحی که میدم رو درصورتی متوجه می‌شید که سطح پایتون خوبی داشته باشید و با شی‌گرایی در پایتون آشنا باشید!

شی گرایی – آموزش اشیاء و کلاس ها در پایتون

درواقع خروجی این map یک object است که قابل دیدن نیست! و برای اینکه بتونیم خروجی رو ببینیم، اومدیم تبدیلش کردیم به لیست!

خلاصه در خط دومِ کُد زیر، داریم عناصر لیست x رو دو برابر می‌کنیم! و میریزیم توی متغیر y!

در خط سوم هم داریم همین y رو پرینت می‌کنیم! که خروجی میشه:

[2, 4, 6]

مثال 2 – ترکیب تابع map با lambda fucntion ها

این مثال یکم پیش‌نیاز نیاز داره! قطعاً باید قبلش بدونید توابع lambda چی هستن و چجوری کار می‌کنن وگرنه تضمین می‌کنم خوف می‌کنید!

آموزش تابع lambda در پایتون

خب حالا که پیش‌نیازها رو طی کردید، بریم سراغ آموزش خودمون! قطعه کد زیر رو در نظر بگیرید تا خط به خط توضیح بدم!

x=[1,2,3]
y=list(map(lambda a:a*2, x))
print(y)

در خط 1 که همون لیست x خودمون رو وارد کردیم!

در خط دو داریم تابعی می‌نویسیم که ورودی مثل a رو می‌گیره و در خروجیش دوبرابر اوون ورودی رو برمی‌گردووونه! (قرار شد اوون آموزش پیش‌نیاز رو نگاه کنید دیگه! توی اون آموزش دقیقاً همین تابع رو برای حالتی که تابع ورودی رو 5 برابر میکنه رو توضیح دادیم!)

خلاصه تنها فرقش با مثال 1 اینه که در اینجا فقط نوع تابعی که تعریف کردیم، دیگه تابع ساده‌ی خود پایتون نیست! و اومدیم با lambda function تابع تعریغ کردیم! همین! بقیش کاملاً شبیه مثلا 1 است و اجازه بدید اَلَکی وقت شما رو نگیرم!

خروجی بازهم مثل قبل خواهد بود:!

[2, 4, 6]

تمرین

برنامه‌ای بنویسید (با همین چیزایی که در این جلسه گفتیم البته!) که مولفه‌های لیست x زیر رو تک تک به توان دو برسوونه!

x=[1,2,3]

جواب [امیدوارم اول خودتون بنویسید، بعد جواب زیر رو نگاه کنید]:

x=[1,2,3]
y=list(map(lambda a:a**2, x))
print(y)

دیگه اظهر من اشمس است که اوون ** علامت توان در پایتون است! (هرچند فرض می‌کنیم کسی که داره آموزش map در پایتون رو می‌بینه، قطعاً ** رو می‌دونه که نشووونه توان است، اما اگر نمی‌دونید می‌تونید به آموزش‌های قبلی خودمون مراجعه کنید!)

مطلب پیشنهادی!

آموزش کامل و رایگان زبان برنامه نویسی پایتون

مطالب مرتبط

آموزش تولید اعداد تصادفی در پایتون (Python) در این مطلب، به طور بی‌نهایت کامل تولید عدد تصادفی (random)...

آموزش نصب کتابخانه (پکیج) XGBoost پایتون در ویندوز یکی از مشکلات کاربرها نصب کتابخانه xgboost است که از...

جزئیات نوشته
تعداد دیدگاه 6
تعداد بازدید 15.1K
تاریخ انتشار 24/11/2019
تاریخ بروزرسانی 24/11/2019
نویسنده گروه آموزشی کولاک
برای ارسال دیدگاه ابتداواردشوید