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ı:

  1. Lambda funkciyaların tek ápiwayı operaciyalar ushın qollanıń
  2. Eger funkciya quramalı bolsa, normal funkciya jazıń
  3. Lambda funkciyaların dokumentaciyası joq, sonlıqtan túsinikli etip jazıń
  4. 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.