map و filter

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/05/12
  • تعداد بازدید: 22

توابع Map و Filter در پایتون

توابع map و filter از توابع درونی (built-in) و مرتبه بالای پایتون هستند که برای پردازش مؤثر لیست‌ها و دیگر اشیاء تکرارشونده (iterables) استفاده می‌شوند. این توابع به صورت lazy اجرا می‌شوند و خروجی آن‌ها یک شیء iterable است، بنابراین برای مشاهده نتیجه، باید آن را به صراحت تبدیل به لیست یا نوع مناسب دیگری کرد.

تابع map

تابع map دو آرگومان دریافت می‌کند: یک تابع و یک iterable. سپس آن تابع را روی تک‌تک عناصر iterable اعمال کرده و یک map object بازمی‌گرداند که می‌توان آن را به لیست یا هر نوع دیگر تبدیل کرد.

def add_five(x):
    return x + 5

nums = [11, 22, 33, 44, 55]
result = list(map(add_five, nums))
print(result)  # خروجی: [16, 27, 38, 49, 60]

همان عملیات را می‌توان به صورت فشرده‌ با تابع لامبدا نیز نوشت:

nums = [11, 22, 33, 44, 55]
result = list(map(lambda x: x + 5, nums))
print(result)

کاربردهای رایج:

# تبدیل رشته‌ها به عدد
str_numbers = ['1', '2', '3', '4']
int_numbers = list(map(int, str_numbers))  # [1, 2, 3, 4]

# اعمال strip روی رشته‌ها
lines = ['  apple ', 'banana ', ' cherry']
cleaned = list(map(str.strip, lines))  # ['apple', 'banana', 'cherry']
تابع filter

تابع filter نیز دو آرگومان دریافت می‌کند: یک تابع شرطی (که باید خروجی بولی داشته باشد) و یک iterable. خروجی فقط شامل آیتم‌هایی است که تابع روی آن‌ها مقدار True بازگرداند.

nums = [11, 22, 33, 44, 55]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens)  # خروجی: [22, 44]

کاربردهای رایج:

# فیلتر کردن مقادیر تهی
values = ["apple", "", "banana", None, "cherry", ""]
non_empty = list(filter(None, values))  # ['apple', 'banana', 'cherry']

# فیلتر کردن اعداد مثبت
nums = [-2, 0, 3, -1, 7]
positives = list(filter(lambda x: x > 0, nums))  # [3, 7]

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.