Mavzu: Lambda operatori. Rekursiya (Funksiya)



Yüklə 19,11 Kb.
tarix08.06.2023
ölçüsü19,11 Kb.
#126783
16-mavzu


Mavzu: Lambda operatori. Rekursiya (Funksiya).
Reja:

  1. Lambda (Nomsiz funksiya).

  2. Rekursiya, Rekursiv funksiyalar.

Lambda ifoda.


Python tilida Lambda ifodalar kichik anonim (nomsiz) funksiyalar bo’lib, u o’ziga xohlagancha argument qabul qila oladi, lekin faqat bitta operatsiya(ifoda)ni bajara oladi.

  • Oddiy arifmetik amallar uchun qo’llaniladi.

  • Ushbu turdagi amallar uchun metod yozish keraksiz va ko’p vaqt kechadi.

  • Lambda bilan biz tez va oson funksiyalar yaratishimiz mumkin.

Syntax:
lambda param1, …, paramN : ifoda
#1-misol
square_func = lambda x : x**2
square_func(4) #return: 16

#2-misol
close_enough = lambda x, y : abs(x – y) < 3


close_enough(2, 4) #return: True
Nima uchun biz Lambda funksiyani ishlatamiz?
Lambdaning to’liq qobiliyati uni boshqa funksiya ichida anonim tarzda ishlatilganda bilinadi.
Masalan bizda bir argumentli funksiya bo’lsin va bu argument biror no’malum songa ko’paytirilsa:
#3-misol
def get_func(n) :
return lambda x : x * n
my_func = get_func(3) #funksiya argumenti = 3
my_func(4) #lambda argumenti = 4 #return: 12
Lambda ifodasini funksiyaga parametr sifatida uzatish:
#4-misol
def operation(a, b, lambda_operation):
natija = lambda_operation(a, b)
print(natija)

operation(3, 4, lambda a, b: a + b)


operation(3, 4, lambda a, b: a * b)

Mini Calculator


#5-misol
a,b = map(int,input("2 ta son kiriting: ").split())
amal = input()
def mini_calculator(amal):
if amal == "+":
return lambda x, y: x + y
elif amal == "-":
return lambda x, y: x - y
elif amal == "*":
return lambda x, y: x * y
else:
return lambda x, y: x / y
operation = mini_calculator(amal)
print(operation(a,b))

Lambda funksiyasi orqali massiv elementlari ustida arifmetik amallar:


#6-misol
def process(my_func,array):
new_array=[]
for i in array:
new_array.append(my_func(i))
return new_array

arr=[1,2,3,4,5,6] #massiv

print(process(lambda x: x**2,arr)) #darajaga ko'tarish
#[1, 4, 9, 16, 25, 36]
print(process(lambda x: x*2,arr)) #ko'paytirish
#[2, 4, 6, 8, 10, 12]
print(process(lambda x: x/2,arr)) #bo'lsih
#[0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
print(process(lambda x: x+100,arr)) #qo'shish
#[101, 102, 103, 104, 105, 106]

Rekursiya. Rekursiv funksiyalar.


Rekursiya bu matematika va dasturlashda umumiy tushuncha hisoblanadi. Bu funktsiyani o’ziga-o’zini chaqirishdan iborat bo’lib, bu esa ma’lumotlarni aylantirish(loop) ga imkon beradi.

Eslatma!
Dasturchi rekursiv funksiya tuzayotganda ehtiyot bo’lishi kerak, chunki hech qachon tugamaydigan yoki ortiqcha xotira yoki protsessor quvvatini ishlatadigan funksiyani yozish mumkin. Lekin dastur to’g’ri yozilgan bo’lsa rekursiv funksiyalar juda ham samarali va matematik jihatdan tartiblidir.

Rekursiya yordamida 1 dan N gacha bo’lgan ketma-ket sonlarning yig’indisini ko’rib chiqamiz:


#1-misol
def sum(n):
if n == 0:
return 0
else:
return n + sum(n - 1)

print(sum(10)) #55



Massiv elementlari yig’insi:
#2-misol
def sum_arr(arr):
if not arr:
return 0
else:
return arr[0] + sum_arr(arr[1:])

print(sum_arr([1,2,3,4,5,6,7,8,9,10])) #55
Yüklə 19,11 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin