به آموزشگاه مجازی سینا خوش آمدید!

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

امتیاز
(0)

تابع‌های لامبدا(lambda) در پایتون

تابع لامبدا، یک تابع کوچکِ بی‌نام(anonymous) است. 

یک تابع لامبدا می‌تواند هر تعداد آرگومان را بپذیرد، اما تنها می‌تواند یک عبارت(expression) داشته باشد. 


شیوه‌ی نوشتاری یا سینتکس تابع لامبدا

lambda arguments : expression

در شیوه‌ی نوشتاری بالا، عبارت(expression) اجرا می‌شود و نتیجه‌ی آن، برگردانده(return) می‌شود. 

مثال شماره 1

اضافه کردن 10 به آرگومان a و برگرداندن نتیجه:

x = lambda a: a + 10
print(x(5))

نتیجه:

15
امتحان کنید

تابع‌های لامبدا می‌توانند هر تعداد آرگومان که لازم باشد، داشته باشند:

مثال شماره 2

ضرب کردن آرگومان a در آرگومان b و برگرداندن نتیجه:

x = lambda a, b: a * b
print(x(5, 6))

نتیجه:

30
امتحان کنید

مثال شماره 3

جمع کردن آرگومان‌های a و b و c و برگرداندن نتیجه:

x = lambda a, b, c: a + b + c
print(x(5, 6, 2))

نتیجه:

13
امتحان کنید

چرا از تابع‌های لامبدا استفاده کنیم؟

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

def myfunc(n):
  return lambda a : a * n

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

مثال شماره 4

def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)

print(mydoubler(11))

نتیجه:

22
امتحان کنید

یا می‌توانیم از همان تعریف تابع، برای ایجادِ یک تابع استفاده کنیم که همواره عددی که به آن می‌دهیم را 3 برابر می‌کند:

مثال شماره 5

def myfunc(n):
  return lambda a : a * n

mytripler = myfunc(3)

print(mytripler(11))

نتیجه:

33
امتحان کنید

یا می‌توانیم از هردوی تابع مثال‌های بالا، در یک برنامه استفاده کنیم:

مثال شماره 6

def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)
mytripler = myfunc(3)

print(mydoubler(11)) 
print(mytripler(11))

نتیجه:

22
33
امتحان کنید

نکته: از تابع‌های لامبدا وقتی استفاده کنید که برای مدت کوتاهی، به یک تابع بی‌نام نیاز دارید. 


استفاده از لامبدا با تابع‌های درونی(Built-in)

از تابع‌های لامبدا معمولاً به همراه تابع‌های درونی، مانند تابع‌های map() و filter() و sorted() استفاده می‌شود. 


استفاده از لامبدا به همراه تابع map()

تابع map() یک تابع را به هر آیتمی از یک چندعضویِ تکرار‌پذیر(iterable) اعمال می‌کند:

مثال شماره 7

دو برابر کردن تمام اعداد درون یک لیست:

numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled)

نتیجه:

[2, 4, 6, 8, 10]
امتحان کنید

استفاده از لامبدا به همراه تابع filter()

تابع filter() لیستی از آیتم ها ایجاد می‌کند، که یک تابع برای آنها، مقدار True را برمی‌گرداند:

مثال شماره 8

فیلتر کردن اعداد فرد در یک لیست:

numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_numbers = list(filter(lambda x: x % 2 != 0, numbers))
print(odd_numbers)

نتیجه:

[1, 3, 5, 7]
امتحان کنید

استفاده از لامبدا به همراه تابع sorted()

تابع sorted() می‌تواند از یک تابع لامبدا بعنوان یک کلید(key) برای مرتب‌سازی شخصی استفاده کند:

مثال شماره 9

مرتب کردن یک لیست از تاپل‌ها بر اساس عنصر دوم:

students = [("Emil", 25), ("Tobias", 22), ("Linus", 28)]
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)

نتیجه:

[('Tobias', 22), ('Emil', 25), ('Linus', 28)]
امتحان کنید

مثال شماره 10

مرتب‌سازی رشته‌ها بر اساس طول(length) آنها:

words = ["apple", "pie", "banana", "cherry"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)

نتیجه:

['pie', 'apple', 'banana', 'cherry']
امتحان کنید

 


منبع: www.w3schools.com/python

 

  • بازدید: 15

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال