Python / Lambda функц

Lambda функц

def ашиглан функц зарлах нь хамгийн нийтлэг арга боловч зарим тохиолдолд маш богино, нэг л зориулалттай функц хэрэг болдог. Python-д үүний тулд lambda функц байдаг — нэг мөрөнд бичигддэг жижиг функц. Жагсаалт эрэмбэлэх, шүүх, хөрвүүлэх үед хамгийн их хэрэглэгддэг.

Lambda-ийн бүтэц

python
# def ашиглан
def нэмэх(а, б):
    return а + б

# Lambda ашиглан — яг л адилхан ажилладаг
нэмэх = lambda а, б: а + б

print(нэмэх(5, 3))    # 8
print(нэмэх(10, 25))  # 35

Бүтэц: lambda параметрүүд: илэрхийлэл

  • lambda — түлхүүр үг
  • параметрүүд — таслалаар тусгаарлана (хоосон ч болно)
  • : — параметр ба биеийг тусгаарлана
  • илэрхийлэл — автоматаар return хийгддэг, ганцхан мөр байх ёстой

Нэг параметртэй lambda

python
# Тоог хоёр дахин нэмэгдүүлэх
хоёр_дахин = 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 параметрт ашиглах явдал:

python
оюутнууд = [
    {"нэр": "Болд",   "оноо": 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() нь жагсаалтын элемент бүрт функц хэрэгсүүлдэг:

python
тоонууд = [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() нь нөхцөлд тохирсон элементүүдийг л үлдээдэг:

python
тоонууд = [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 ашиглах вэ?

python
# ✅ 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 хаана зарлагдсанаас хамаарч хаана харагдаж, хаана харагдахгүй болохыг тодорхойлдог чухал ойлголтыг судална.