تابع map و lambda

اصلاح شده

2026-07-25

map چیست؟

  • یک تابع رو روی همه عناصر یک لیست (یا هر iterable دیگه) اعمال می‌کنه
  • جایگزین سریع‌تر و خواناتر برای نوشتن یک حلقه for ساده جهت تغییر همه عناصر

سینتکس

map(function, iterable)

مثال ساده: مقایسه با for

# روش قبلی با for
numbers = [1, 2, 3, 4]
squares = []
for n in numbers:
    squares.append(n ** 2)
print(squares)
# همون کار با map
numbers = [1, 2, 3, 4]
squares = list(map(lambda n: n ** 2, numbers))
print(squares)
[1, 4, 9, 16]

نکته مهم: خروجی map یک map object است

  • باید با list()، tuple() یا حلقه، به چیز قابل‌استفاده تبدیلش کنیم
result = map(lambda n: n * 2, [1, 2, 3])
print(result)          # <map object at 0x...>
print(list(result))    # [2, 4, 6]

استفاده با تابع معمولی (نه فقط lambda)

def to_upper(word):
    return word.upper()

words = ['salam', 'khoobi']
print(list(map(to_upper, words)))
['SALAM', 'KHOOBI']

map روی چند لیست همزمان

a = [1, 2, 3]
b = [10, 20, 30]
result = list(map(lambda x, y: x + y, a, b))
print(result)
[11, 22, 33]

map در مقابل list comprehension

روش مثال
map list(map(lambda n: n**2, numbers))
list comprehension [n**2 for n in numbers]
  • هر دو یک نتیجه می‌دن؛ list comprehension معمولاً در پایتون خواناتر و رایج‌تره، ولی map وقتی یک تابع از قبل تعریف‌شده داریم (نه lambda)، خیلی خلوت‌تره

تمرین