17-ámeliy jumıs: Python programmalastırıw tilinde Lambda funkciyaları
1. Lambda funkciyası haqqında túsinik:
Lambda funkciyası - bir qatarlı anonim funkciya bolıp, ápiwayı operaciyalardı tez orınlaw ushın qollanıladı.
Sintaksis:
lambda argumentler: ańlatpa
2. Lambda funkciyasınıń tiykarǵı ózgeshelikleri:
- Bir qatarlı funkciya
- Tek bir ańlatpanı orınlay aladı
- return sózi qollanılmaydı
- Argumentler sanı sheklenbegen
3. Ámeliy mısallar:
3.1. Ápiwayı lambda funkciyası:
# Ádettegi funkciya
defkvadrat(x):
return x ** 2
# Lambda funkciyası
kvadrat_lambda = lambda x: x ** 2
# Qollanıw
print(kvadrat(5)) # 25
print(kvadrat_lambda(5)) # 25
3.2. Bir neshe argumentli lambda:
# Eki sandı qosıw
qosıw = lambda x, y: x + y
print(qosıw(3, 4)) # 7
# Úsh sandı kóbeytiw
kóbeytiw = lambda x, y, z: x * y * z
print(kóbeytiw(2, 3, 4)) # 24
3.3. Lambda hám map():
# Dizimniń barlıq elementlerin kvadratqa kóteriw
sanlar = [1, 2, 3, 4, 5]
kvadratlar = list(map(lambda x: x**2, sanlar))
print(kvadratlar) # [1, 4, 9, 16, 25]
# Dizimniń elementlerin 2 ge kóbeytiw
nátiyjeler = list(map(lambda x: x*2, sanlar))
print(nátiyjeler) # [2, 4, 6, 8, 10]
3.4. Lambda hám filter():
# Jup sanlar filter
sanlar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
jup_sanlar = list(filter(lambda x: x % 2 == 0, sanlar))
print(jup_sanlar) # [2, 4, 6, 8, 10]
# Oń sanlar filter
sanlar = [-4, -3, -2, -1, 0, 1, 2, 3, 4]
oń_sanlar = list(filter(lambda x: x > 0, sanlar))
print(oń_sanlar) # [1, 2, 3, 4]
3.5. Lambda hám reduce():
from functools import reduce
# Dizim elementlerin qosıw
sanlar = [1, 2, 3, 4, 5]
jámi = reduce(lambda x, y: x + y, sanlar)
print(jámi) # 15
# Dizim elementlerin kóbeytiw
kóbeyme = reduce(lambda x, y: x * y, sanlar)
print(kóbeyme) # 120
3.6. Lambda hám sorting:
# Dizimdi sortlaw
sanlar = [23, 12, 45, 6, 78, 1]
sortlanǵan = sorted(sanlar, key=lambda x: x)
print(sortlanǵan) # [1, 6, 12, 23, 45, 78]
# Sózlerdi uzınlıǵı boyınsha sortlaw
sózler = ['alma', 'almurt', 'erik', 'qawın']
uzınlıq_sort = sorted(sózler, key=lambda x: len(x))
print(uzınlıq_sort) # ['erik', 'alma', 'qawın', 'almurt']
3.7. Sózlik (dictionary) menen islew:
studentler = [
{'atı': 'Ali', 'bal': 85},
{'atı': 'Ayjan', 'bal': 92},
{'atı': 'Samal', 'bal': 78}
]
# Bal boyınsha sortlaw
bal_sort = sorted(studentler, key=lambda x: x['bal'], reverse=True)
print(bal_sort)
# Atı boyınsha sortlaw
at_sort = sorted(studentler, key=lambda x: x['atı'])
print(at_sort)
3.8. Shártli lambda:
# Eki sannan úlkenin qaytarıw
maks = lambda x, y: x if x > y else y
print(maks(10, 5)) # 10
# San oń yamasa teris ekenin tekeriw
belgi = lambda x: "oń"if x > 0else"teris"if x < 0else"nol"
print(belgi(-5)) # "teris"
3.9. Quramalı mısallar:
# Dizimdi filtrlew hám transformaciyalaw
sanlar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
nátiyje = list(map(lambda x: x**2,
filter(lambda x: x % 2 == 0, sanlar)))
print(nátiyje) # [4, 16, 36, 64, 100]
# Nested lambda
func = lambda x: lambda y: x + y
qosıw_5 = func(5)
print(qosıw_5(3)) # 8
3.10. Funkcional programmalaw mısalları:
# Map hám filter kombinaciyası
sanlar = range(-5, 6)
nátiyje = list(filter(lambda x: x < 0,
map(lambda x: x**2, sanlar)))
print(nátiyje)
# Reduce hám map kombinaciyası
sózler = ['python', 'lambda', 'funkciya']
nátiyje = reduce(lambda x, y: x + y,
map(lambda x: len(x), sózler))
print(nátiyje)
4. Lambda funkciyasın qollanıw usınısları:
- Lambda funkciyaların tek ápiwayı operaciyalar ushın qollanıń
- Eger funkciya quramalı bolsa, normal funkciya jazıń
- Lambda funkciyaların dokumentaciyası joq, sonlıqtan túsinikli etip jazıń
- Map, filter, reduce metodları menen birge qollanıw jaqsı
5. Lambda vs Normal funkciya:
# Normal funkciya
defkóbeytiw(x, y):
"""Eki sandı kóbeytiw"""
return x * y
# Lambda funkciya
kóbeytiw_lambda = lambda x, y: x * y
# Eki usıl da birdey nátiyje beredi
print(kóbeytiw(3, 4)) # 12
print(kóbeytiw_lambda(3, 4)) # 12
Bul materiallardı úyreniw hám ámeliyatta qollanıw arqalı lambda funkciyaların effektiv paydalanıwdı úyreniw múmkin.