Python da ob'ektlarni iteratsiya qilish uchun map funksiyasi
Faraz qilaylik, bizda raqamlarni kvadratga oshirish uchun square
funksiyasi bor. Va bizga shu funksiyani elementlariga qo'llash kerak
bo'lgan ro'yxat mavjud:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
Python da bu masalani hal qilish uchun maxsus map funksiyasidan
foydalanish mumkin. U parametr sifatida funksiya va unga qo'llash kerak
bo'lgan ro'yxatni qabul qiladi.
Keling, misolni yechish uchun map dan foydalanaylik:
res = map(square, lst)
print(res)
Har bir ro'yxat, har qanday murakkab ob'ekt kabi, Python ning tizim xotirasida ko'p joy egallaydi. Shuning uchun resurslarni tejash maqsadida kod bajarilgandan so'ng yangi ro'yxat emas, balki maxsus iteratsiya qilinadigan map-ob'ekt qaytariladi:
<map object at 0x000001F16674BA00>
Keling, uni tsikl bilan aylantiramiz:
for el in res:
print(el)
Natijada yangi ro'yxatning barcha elementlari chiqadi:
4
9
36
64
225
Map-ob'ektdan yangi ro'yxat yaratish uchun unga list funksiyasini
qo'llash kerak:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
Natijada quyidagi ro'yxat chiqadi:
[4, 9, 36, 64, 225]
Shuningdek, map funksiyasi bilan ishlashda birinchi parametrda
lambda-funksiyani ham belgilash mumkin.
Keling, oldingi misolni lambda-funksiya yordamida qayta yozamiz:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Quyidagi kodni lambda-funksiya orqali qayta yozing:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Quyidagi kodni lambda-funksiya orqali qayta yozing:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))