Python'da Map() Fonksiyonu Nasıl Kullanılır?

Python'un map() fonksiyonunu nasıl kullanacağınızı öğrenin. Döngü yazmadan yinelenebilir öğelere işlevler uygulama konusunda uzmanlaşın ve haritayı liste kavramalarıyla karşılaştırın.

Bu Çözümü Editör'de deneyin

Genel Bakış

Veri koleksiyonlarını işlerken, yinelenebilir bir öğedeki her bir öğeye genellikle belirli bir dönüşüm uygulamanız gerekecektir. Örneğin, dize numaralarından oluşan bir listeyi tam sayılara dönüştürmek veya dizelerden oluşan bir veritabanı dizisini küçük harflere dönüştürerek normalleştirmek. Python, ayrıntılı "for" döngüleri yazmak yerine, "map()" adı verilen yerleşik bir araç sağlar.

'map(function, iterable)' işlevi, bir dönüştürme işlevini ve yinelenebilir bir işlevi argüman olarak kabul eder. İşlevi yinelenebilir öğenin her öğesine uygular ve bir yineleyici nesne (bir 'harita' nesnesi) döndürür. Bir yineleyici olarak döndürüldüğü için hesaplamalar tembelce yürütülür: öğeler yalnızca siz onları yineledikçe işlenir, bu da büyük veri kümeleri için bellekten tasarruf sağlar.

Harita nesnesinin liste temsilini hemen elde etmek için, sonucu `list()` yapıcısını kullanarak dönüştürmelisiniz: `list(map(func, data))`. Satır içi yürütme için herhangi bir standart işlevi, standart kitaplık işlevini ("str" ​​veya "len" gibi) veya "lambda" anahtar sözcüğüyle bildirilen özel anonim işlevleri doğrudan "map()"'e aktarabilirsiniz.

Kod ve Yürütme Çıkışı

Bu betik, dizi dönüşümleriyle Map() işlevini kullanarak koleksiyonları değiştirmeyi, liste öğelerini sayılarla eşlemeyi ve lambda geri çağırmalarını kullanmayı gösterir.

map_function.py
Editör'de deneyin
# 1. Map string conversion over a list of numbers
numbers = [1, 2, 3, 4]
string_numbers = list(map(str, numbers))
print("Mapped to strings:", string_numbers)

# 2. Square numbers using a lambda function inside map()
squared = list(map(lambda x: x**2, numbers))
print("Squared numbers:", squared)

# 3. Apply custom logic function to items
def normalize_name(name):
    return name.strip().capitalize()

names = ["  alice", "BOB  ", " charlie "]
clean_names = list(map(normalize_name, names))
print("Clean names list:", clean_names)
Terminal Çıkışı
Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']

Adım Adım Uygulama

  • Koleksiyondaki her öğeye uygulamak istediğiniz dönüşüm işlevini tanımlayın.
  • Dönüştürülen öğelerin tembel bir yineleyicisini oluşturmak için haritayı(işlev_adı, yinelenebilir) çağırın.
  • Tüm öğelere hemen standart bir liste olarak erişmeniz gerekiyorsa, map() çağrısını list() içine sarın.
  • Hızlı, tek seferlik satır içi dönüşümler için map() işlevini lambda işlevleriyle birleştirin.

Sıkça Sorulan Sorular

Map() liste kavramalarından daha mı iyi?

Liste anlamaları genellikle topluluk tarafından daha okunaklı ve Pythonic olarak kabul edilir. Bununla birlikte, harita(), optimize edilmiş C kodu döngülerini çalıştırdığı için mevcut bir yerleşik işlevi (map(str, list gibi) uygularken daha hızlı olabilir.

Map() birden fazla yinelenebilirlik alabilir mi?

Evet! Eğer dönüştürme fonksiyonu birden fazla argüman alıyorsa, haritaya() birden fazla yinelenebilir değer iletebilirsiniz. Örneğin, harita(lambda x, y: x + y, liste1, liste2) öğeleri ikili olarak ekleyecektir.

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.