Python Map Funksiyasi

Python dasturlash tilida Map funksiyasidan foydalanish bo'yicha batafsil qo'llanma, misollar va amaliy mashqlar bilan

So'nggi yangilanish: 2024-12-29

Bugun biz Python dasturlash tilining juda foydali va ko'p ishlatiladigan funksiyalaridan biri - Map funksiyasi haqida batafsil o'rganamiz. Map funksiyasi sizga ro'yxatlar va boshqa ketma-ketliklarni samarali qayta ishlash imkonini beradi, bu esa ko'p hollarda kodingizni ancha soddalashtirib, tezligini oshiradi.

Map Funksiyasi Nima?

Map funksiyasi - bu Python-ning o'rnatilgan (built-in) funksiyalaridan biri bo'lib, u berilgan funksiyani ketma-ketlikning (masalan, ro'yxat yoki kortejning) har bir elementiga qo'llaydi. Bu funksiya ro'yxatning har bir elementini qayta ishlash uchun juda qulay va samarali usul hisoblanadi.

Map Funksiyasining Sintaksisi

Map funksiyasining umumiy sintaksisi quyidagicha:

map(function, iterable, ...)

Bu yerda:

  • function - har bir elementga qo'llaniladigan funksiya
  • iterable - qayta ishlanadigan ketma-ketlik (ro'yxat, kortej va boshqalar)
  • ... - qo'shimcha ketma-ketliklar (ixtiyoriy)

Oddiy Misol

Keling, oddiy bir misoldan boshlaymiz. Aytaylik, bizda sonlar ro'yxati bor va biz har bir sonni kvadratga ko'tarmoqchimiz:

sonlar = [1, 2, 3, 4, 5]

# Map funksiyasi yordamida har bir sonni kvadratga ko'tarish
kvadratlar = list(map(lambda x: x**2, sonlar))

print(kvadratlar)  # Natija: [1, 4, 9, 16, 25]

Bu misolda biz lambda funksiyasidan foydalandik, lekin siz oddiy funksiyani ham ishlatishingiz mumkin:

def kvadratga_kotarish(x):
    return x**2

kvadratlar = list(map(kvadratga_kotarish, sonlar))
print(kvadratlar)  # Natija: [1, 4, 9, 16, 25]

Map Funksiyasining Afzalliklari

  1. Tezlik: Map funksiyasi C tilida yozilgan va juda tez ishlaydi.
  2. Xotiradan samarali foydalanish: Map funksiyasi "dangasa baholash" (lazy evaluation) usulidan foydalanadi, ya'ni natijalar kerak bo'lgandagina hisoblanadi.
  3. Qisqa va aniq kod: Map funksiyasi ko'p hollarda for tsikllariga qaraganda qisqaroq va aniqroq kod yozish imkonini beradi.
  4. Funksional dasturlash: Map funksiyasi funksional dasturlash tamoyillariga mos keladi.

Map Funksiyasini Qo'llash

1. Turli Xil Ma'lumot Turlari bilan Ishlash

Map funksiyasi faqat sonlar bilan emas, balki har qanday turdagi ma'lumotlar bilan ishlashi mumkin:

ismlar = ['ali', 'vali', 'gani']
katta_ismlar = list(map(str.upper, ismlar))
print(katta_ismlar)  # Natija: ['ALI', 'VALI', 'GANI']

2. Bir Nechta Ketma-ketliklar bilan Ishlash

Map funksiyasi bir vaqtning o'zida bir nechta ketma-ketlik bilan ishlashi mumkin:

a = [1, 2, 3]
b = [10, 20, 30]

natija = list(map(lambda x, y: x + y, a, b))
print(natija)  # Natija: [11, 22, 33]

3. Obyektlar Ro'yxati bilan Ishlash

Map funksiyasi obyektlar ro'yxati bilan ishlash uchun ham juda foydali:

class Talaba:
    def __init__(self, ism, baho):
        self.ism = ism
        self.baho = baho

talabalar = [
    Talaba("Ali", 85),
    Talaba("Vali", 92),
    Talaba("Gani", 78)
]

baholar = list(map(lambda x: x.baho, talabalar))
print(baholar)  # Natija: [85, 92, 78]

4. Funksiyalar Ro'yxati bilan Ishlash

Map funksiyasini funksiyalar ro'yxati bilan ham ishlatish mumkin:

def kvadrat(x):
    return x**2

def kub(x):
    return x**3

funksiyalar = [kvadrat, kub]
son = 3

natijalar = list(map(lambda f: f(son), funksiyalar))
print(natijalar)  # Natija: [9, 27]

Amaliy Misol: Ob-havo Ma'lumotlarini Qayta Ishlash

Keling, map funksiyasini amalda qo'llab ko'ramiz. Aytaylik, bizda bir haftalik ob-havo ma'lumotlari bor va biz ularni Farengeytdan Selsiyga o'tkazishimiz kerak:

ob_havo = [
    {"kun": "Dushanba", "harorat": 75},
    {"kun": "Seshanba", "harorat": 80},
    {"kun": "Chorshanba", "harorat": 82},
    {"kun": "Payshanba", "harorat": 79},
    {"kun": "Juma", "harorat": 85},
    {"kun": "Shanba", "harorat": 88},
    {"kun": "Yakshanba", "harorat": 91}
]

def farengeyt_selsiyga(ob_havo_dict):
    return {
        "kun": ob_havo_dict["kun"],
        "harorat": round((ob_havo_dict["harorat"] - 32) * 5/9, 1)
    }

natija = list(map(farengeyt_selsiyga, ob_havo))

for kun in natija:
    print(f"{kun['kun']}: {kun['harorat']}°C")

Bu misolda biz map funksiyasini ishlatib, har bir kunning haroratini Farengeytdan Selsiyga o'tkazdik.

Map va List Comprehension

Ko'p hollarda map funksiyasi o'rniga list comprehension ishlatish mumkin. Quyida ikkala usulni taqqoslaymiz:

sonlar = [1, 2, 3, 4, 5]

# Map funksiyasi bilan
kvadratlar_map = list(map(lambda x: x**2, sonlar))

# List comprehension bilan
kvadratlar_comp = [x**2 for x in sonlar]

print(kvadratlar_map)  # Natija: [1, 4, 9, 16, 25]
print(kvadratlar_comp)  # Natija: [1, 4, 9, 16, 25]

Ikkala usul ham bir xil natija beradi, lekin ba'zi hollarda map funksiyasi tezroq ishlashi mumkin, ayniqsa katta hajmdagi ma'lumotlar bilan ishlashda.

Tez-tez So'raladigan Savollar (TSS)

  1. S: Map funksiyasi natijasini nima uchun ro'yxatga o'tkazish kerak? J: Map funksiyasi map obyektini qaytaradi. Agar sizga natijani ro'yxat ko'rinishida ko'rish kerak bo'lsa, uni list() funksiyasi yordamida ro'yxatga o'tkazishingiz kerak.
  2. S: Map funksiyasi asl ro'yxatni o'zgartiradimi? J: Yo'q, map funksiyasi yangi map obyektini yaratadi va asl ro'yxatni o'zgartirmaydi.
  3. S: Map funksiyasini generator sifatida ishlatish mumkinmi? J: Ha, map funksiyasi generator kabi ishlaydi. Siz undan iterator sifatida foydalanishingiz mumkin.
  4. S: Map funksiyasi bilan None qaytaradigan funksiyalarni ishlatish mumkinmi? J: Ha, lekin bu tavsiya etilmaydi, chunki natijada None qiymatlardan iborat ro'yxat hosil bo'ladi.
  5. S: Map funksiyasi parallel ravishda ishlay oladimi? J: Standart map funksiyasi parallel ravishda ishlamaydi. Parallel hisoblash uchun multiprocessing modulidagi Pool.map() funksiyasidan foydalanish mumkin.
  6. S: Map funksiyasi qanday ishlaydi agar ketma-ketliklar uzunligi har xil bo'lsa? J: Map funksiyasi eng qisqa ketma-ketlik tugaguncha ishlaydi. Qolgan elementlar e'tiborga olinmaydi.
  7. S: Map funksiyasini qachon ishlatish kerak va qachon list comprehension yaxshiroq? J: Agar siz mavjud funksiyani qo'llayotgan bo'lsangiz, map yaxshiroq. Murakkab mantiq uchun list comprehension qulay bo'lishi mumkin.
  8. S: Map funksiyasi bilan ishlatiladigan funksiya nechta argumentga ega bo'lishi mumkin? J: Funksiya map funksiyasiga berilgan ketma-ketliklar soniga teng argumentlarga ega bo'lishi kerak.
  9. S: Map funksiyasini dictionary bilan ishlata olamanmi? J: To'g'ridan-to'g'ri emas, lekin siz dictionary.items(), dictionary.keys() yoki dictionary.values() metodlarini ishlatishingiz mumkin.
  10. S: Map funksiyasi xatoliklarni qanday boshqaradi? J: Agar map funksiyasiga berilgan funksiya xatolik chiqarsa, map funksiyasi bu xatolikni ko'taradi.

Xulosa

Map funksiyasi - bu Python-da ro'yxatlar va boshqa ketma-ketliklarni qayta ishlash uchun kuchli vosita. U sizga kodingizni qisqartirish, tezligini oshirish va funksional dasturlash tamoyillarini qo'llash imkonini beradi.

Map funksiyasini to'g'ri ishlatish orqali, siz murakkab operatsiyalarni sodda va tushunarli tarzda bajarishingiz mumkin. Bu ayniqsa katta hajmdagi ma'lumotlar bilan ishlashda yoki bir nechta ketma-ketliklarni bir vaqtda qayta ishlashda foydali.

Biroq, har qanday vositada bo'lgani kabi, map funksiyasini ham o'z o'rnida ishlatish muhim. Ba'zi hollarda oddiy tsikl yoki list comprehension ishlatish ma'qulroq bo'lishi mumkin. Kodingizning o'qilishi va tushunarliligini har doim birinchi o'ringa qo'ying.

Map funksiyasini o'z loyihalaringizda qo'llash orqali, siz Python-ning kuchli funksional dasturlash imkoniyatlaridan foydalanishni o'rganasiz. Bu esa sizga yanada samarali va professional kod yozish imkonini beradi.

Qo'shimcha manbalar

  1. Python Rasmiy Hujjatlari - Map Funksiyasi
  2. Real Python - Python Map() Function
  3. GeeksforGeeks - Python map() function