6. Pythonda lambda funktsiyalari
Pythonda anonim funksiya nomsiz aniqlanadigan funksiya hisoblanadi. Oddiy funksiyalar Pythonda def kalit so‘z yordamida aniqlangan bo‘lsa, anonim funksiyalar lambda kalit so‘z yordamida aniqlanadi. Demak, anonim funksiyalar lambda funksiyalari deb ham ataladi. Pythondagi lambda funksiyasi quyidagi sintaksisga ega.
lambda argumentlar: ifoda
Lambda funksiyalari har qanday argumentga ega bo'lishi mumkin, lekin faqat bitta ifodani qo’llab-quvvatlaydi. Ifoda hisoblanadi va qiymati argumentga qaytariladi. Lambda funksiyalari funksiya ob'ektlari kerak bo'lgan joyda ishlatilishi mumkin.
Pythonda Lambda funktsiyasiga misollar
Kirish qiymatini ikki baravar oshiradigan lambda funksiyasiga misol.
double = lambda x: x * 2
print(double(5))
Chiqish
10
Yuqoridagi dasturda lambda x: x*2 lambda funksiyasi mavjud. Bu yerda x argument va x*2 hisoblanadigan va natijasi argumentga qaytariladigan ifoda.
Bu funksiyaning nomi yo'q. Bu double identifikatorga tayinlangan funksiya ob'ektini qaytaradi. Endi biz buni oddiy funksiya deb atashimiz mumkin. Yuqoridagi dastur kodidagi nomsiz funktsiya bilan quyidagi oddiy yozilgan funktsiya deyarli bir xil:
def double(x):
return x*2
Lambda funksiyalaridan nomsiz funksiya talab qilinganda foydalanish tavsiya etiladi, ya’ni odatda Pythonda nomsiz funktsiyalardan yuqori tartibli funksiya (boshqa funksiyalarni argument sifatida qabul qiladigan funksiya)ga argument sifatida foydalaniladi. Lambda funksiyalari filter() va map() kabi o'rnatilgan funksiyalar bilan birga ishlatiladi.
Filtr() bilan foydalanishga misol. filter() funksiyasining sintaksisi:
filter (lambda argument: ifoda, ro’yxat)
Bu funksiya ro'yxatdagi barcha elementlar bilan chaqiriladi va ifoda True qiymat qaytarganda, natijaga mos yangi yangi ro'yxat qaytariladi. Quyida berilgan sonlar ro'yxatidan faqat juft sonlarni ajratib olish uchun filter() funksiyadan foydalanishga misol keltirilgan:
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
print(new_list)
Chiqish
[4, 6, 8, 12]
map() funktsiyasi bilan foydalanishga misol. map() funktsiyasining sintaksisi:
map(lambda argument: ifoda, ro’yxat)
Funksiya berilgan ro'yxatdagi barcha elementlar bilan chaqiriladi va har bir element uchun ifoda qiymatiga mos elementlarni o'z ichiga olgan yangi ro'yxatni qaytaradi.
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(map(lambda x: x * 2 , my_list))
print(new_list)
Keltirilgan misolda nomsiz funktsiyaning vazifasi berilgan ro’yxatdagi har bir elementni 2 ga ko’paytiradi va yangi ro’yxatni shakllantiradi.
Do'stlaringiz bilan baham: |