Lambda функц
def ашиглан функц зарлах нь хамгийн нийтлэг арга боловч зарим тохиолдолд маш богино, нэг л зориулалттай функц хэрэг болдог. Python-д үүний тулд lambda функц байдаг — нэг мөрөнд бичигддэг жижиг функц. Жагсаалт эрэмбэлэх, шүүх, хөрвүүлэх үед хамгийн их хэрэглэгддэг.
Lambda-ийн бүтэц
# def ашиглан
def нэмэх(а, б):
return а + б
# Lambda ашиглан — яг л адилхан ажилладаг
нэмэх = lambda а, б: а + б
print(нэмэх(5, 3)) # 8
print(нэмэх(10, 25)) # 35
Бүтэц: lambda параметрүүд: илэрхийлэл
lambda— түлхүүр үг- параметрүүд — таслалаар тусгаарлана (хоосон ч болно)
:— параметр ба биеийг тусгаарлана- илэрхийлэл — автоматаар
returnхийгддэг, ганцхан мөр байх ёстой
Нэг параметртэй lambda
# Тоог хоёр дахин нэмэгдүүлэх
хоёр_дахин = lambda x: x * 2
print(хоёр_дахин(7)) # 14
print(хоёр_дахин(100)) # 200
# Үсгийг томоор хөрвүүлэх
томоор = lambda мөр: мөр.upper()
print(томоор("python")) # PYTHON
# Тэгш эсэх шалгах
тэгш_эсэх = lambda n: n % 2 == 0
print(тэгш_эсэх(4)) # True
print(тэгш_эсэх(7)) # False
sorted() ба lambda — эрэмбэлэлт
Lambda-ийн хамгийн нийтлэг хэрэглээ бол sorted() функцийн key параметрт ашиглах явдал:
оюутнууд = [
{"нэр": "Болд", "оноо": 92},
{"нэр": "Анар", "оноо": 78},
{"нэр": "Сарнай", "оноо": 85},
{"нэр": "Төгс", "оноо": 61},
]
# Онооны дагуу өсөхөөр эрэмбэлэх
өсөх = sorted(оюутнууд, key=lambda x: x["оноо"])
for о in өсөх:
print(f"{о['нэр']}: {о['оноо']}")
print()
# Онооны дагуу буурахаар эрэмбэлэх
буурах = sorted(оюутнууд, key=lambda x: x["оноо"], reverse=True)
for о in буурах:
print(f"{о['нэр']}: {о['оноо']}")
Гаралт:
Төгс: 61
Анар: 78
Сарнай: 85
Болд: 92
Болд: 92
Сарнай: 85
Анар: 78
Төгс: 61
map() ба lambda — хөрвүүлэлт
map() нь жагсаалтын элемент бүрт функц хэрэгсүүлдэг:
тоонууд = [1, 2, 3, 4, 5]
# Бүгдийг зэрэгт гаргах
зэрэг = list(map(lambda x: x ** 2, тоонууд))
print(зэрэг) # [1, 4, 9, 16, 25]
# Үнийн жагсаалтад НӨАТ нэмэх (10%)
үнүүд = [50_000, 120_000, 75_000]
нөат_тэй = list(map(lambda үнэ: үнэ * 1.1, үнүүд))
print(нөат_тэй) # [55000.0, 132000.0, 82500.0]
filter() ба lambda — шүүлт
filter() нь нөхцөлд тохирсон элементүүдийг л үлдээдэг:
тоонууд = [3, 7, 2, 8, 5, 10, 1, 6]
# Зөвхөн тэгш тоонуудыг шүүх
тэгш = list(filter(lambda x: x % 2 == 0, тоонууд))
print(тэгш) # [2, 8, 10, 6]
# 5-аас их тоонуудыг шүүх
их = list(filter(lambda x: x > 5, тоонууд))
print(их) # [7, 8, 10, 6]
# Хоосон биш string-үүдийг шүүх
үгнүүд = ["Python", "", "код", "", "сур"]
дүүрэн = list(filter(lambda s: s != "", үгнүүд))
print(дүүрэн) # ['Python', 'код', 'сур']
Lambda хэзээ ашиглах, хэзээ def ашиглах вэ?
# ✅ Lambda тохиромжтой — богино, нэг удаагийн хэрэглэгдэхүүн
эрэмбэлсэн = sorted(нэрнүүд, key=lambda x: x.lower())
# ✅ def тохиромжтой — нарийн логик, олон мөр, дахин хэрэглэх
def оноо_тооцоолох(оролцоо, шалгалт, даалгавар):
нийт = оролцоо * 0.1 + шалгалт * 0.6 + даалгавар * 0.3
return round(нийт, 2)
Lambda нь нэг илэрхийлэл л агуулж чадна — if/else, for, print() зэрэг нарийн логик шаардвал def ашиглах нь зөв.
Дараагийн хичээлд:
Lambda функцийг эзэмшлээ! Дараа нь scope (хамрах хүрээ) — variable хаана зарлагдсанаас хамаарч хаана харагдаж, хаана харагдахгүй болохыг тодорхойлдог чухал ойлголтыг судална.