آموزش تابع لامبدا(lambda) در پایتون
تابعهای لامبدا(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. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.