تابع map در پایتون
تابع map در پایتون برای اعمال یک تابع به هر عنصر از یک iterable (مانند لیست، تاپل یا رشته) و جمع آوری نتایج در یک iterable جدید استفاده میشود.
نحوه عملکرد:
فرض کنید لیست numbers
شامل مقادیر [۱, ۲, ۳, ۴]
و تابع square(x)
مربع هر عدد را برمیگرداند.
با اجرای دستور map(square, numbers)
, یک iterable جدید شامل مقادیر [۱, ۴, ۹, ۱۶]
(مربع هر عدد در لیست numbers
) ایجاد میشود.
تفاوت با for
:
map()
یک iterable جدید برمیگرداند، در حالی کهfor
فقط کد را برای هر عنصر از iterable اجرا میکند.map()
از تنبلی (laziness) پشتیبانی میکند، به این معنی که عناصر iterable تا زمانی که به آنها نیاز نباشد، محاسبه نمیشوند.
مثالهای کاربردی:
۱. مجذور کردن عناصر لیست:
Python
numbers = [۱, ۲, ۳, ۴]
def square(x):
return x * x
squared_numbers = map(square, numbers)
print(list(squared_numbers)) # خروجی: [۱, ۴, ۹, ۱۶]
۲. اعمال تابع به دو لیست:
Python
numbers1 = [۱, ۲, ۳]
numbers2 = [۴, ۵, ۶]
def add_numbers(x, y):
return x + y
summed_numbers = map(add_numbers, numbers1, numbers2)
print(list(summed_numbers)) # خروجی: [۵, ۷, ۹]
۳. تبدیل نوع عناصر لیست:
Python
strings = ["apple", "banana", "cherry"]
def to_upper(x):
return x.upper()
upper_strings = map(to_upper, strings)
print(list(upper_strings)) # خروجی: ['APPLE', 'BANANA', 'CHERRY']
۴. فیلتر کردن عناصر با map()
:
Python
numbers = [۱, ۲, ۳, ۴, ۵]
def is_even(x):
return x % ۲ == ۰
even_numbers = map(is_even, numbers)
filtered_numbers = list(filter(lambda x: x is True, even_numbers))
print(filtered_numbers) # خروجی: [۲, ۴]
نکات:
map()
برای اعمال یک تابع ساده به هر عنصر از یک iterable مفید است.- اگر به دنبال اعمال یک تابع و سپس فیلتر کردن نتایج هستید، می توانید از ترکیب
map()
وfilter()
استفاده کنید. map()
از تنبلی (laziness) پشتیبانی میکند، به این معنی که میتوانید از آن در عملیات حجیم بدون اشغال حافظه زیاد استفاده کنید.- می توانید از
map()
برای اعمال توابع به انواع مختلف داده (مانند لیست، تاپل و رشته) استفاده کنید.