Python map() Fonksiyonu, Örneklerle Açıklaması
Yayınlanan: 2022-08-25Bu öğreticide, bir yinelenebilir öğenin tüm öğelerine bir işlev uygulamak için Python map() işlevini nasıl kullanacağınızı öğreneceksiniz.
Python, görevleri programlama yoluyla işlevlerin hesaplanması olarak tanımlamanıza olanak tanıyan işlevsel programlama paradigmasını destekler. Python işlevlerini nesneler olarak ele alabilirsiniz: bir işlev, parametre olarak başka bir işlevi alıp başka bir işlev döndürebilir.
map() işlevi, bir işlevi argüman olarak alır ve onu bir dizideki tüm öğelere uygulamanıza izin verir.
Bu öğreticinin sonunda, ayrıntılı döngüleri yeniden yazmak ve kavramaları listelemek için Python map() işlevini kullanabileceksiniz. map() işlevini kullanmanın farklı yollarını anlamak için birkaç örnek kodlayacaksınız.
Python Listesinin Öğelerine Bir İşlev Nasıl Uygulanır?

Tartışmamıza bir örnekle başlayalım.
Burada nums , sayıların bir listesidir.
nums = [2,4,3,7] Ardından self_pow() işlevini düşünün. self_pow() işlevi, argüman olarak bir sayı alır ve sayının kendisinin gücüne yükseltilmiş sayıyı döndürür: n**n.
Python'da ** üs alma operatörüdür. a**b, b, a b kuvvetine yükseltilmiş a değerini döndürür.
def self_pow(n): return n**nYAPILACAKLAR : nums_pow listesindeki her öğeye
numsself_pow()işlevini uygulayarak yeni birnums_powlistesi oluşturmak için.
Döngü için kullanma
Bunu yapmak için Python'da for döngülerini kullanabilirsiniz:
- Sayılar listesindeki her sayı için, argüman olarak
numilenumsself_pow()işlevini çağırın. - İşlev çağrısının sonucunu yeni
nums_powlistesine ekleyin.
nums_pow = [] for num in nums: nums_pow.append(self_pow(num)) print(nums_pow) Çıktıda, her sayı nums kendisine yükseltilir. nums_pow listesindeki öğeler aşağıdaki gibidir: 2 2 , 4 4 , 3 3 ,7 7 .
Output [4, 256, 27, 823543]Liste Anlamayı Kullanma
Liste kavrayışını kullanarak bunu özlü hale getirebilirsiniz. Yukarıdaki açık for döngüsünden, çıktı ifadesini ve döngü yapılacak listeyi tanımlayabiliriz.

Daha sonra genel liste anlama ifadesini değiştirebiliriz:
new_list = [<output expression> for item in iterable] nums_pow listesini oluşturmak için liste anlama ifadesi aşağıdaki gibidir:
nums_pow = [self_pow(num) for num in nums] print(nums_pow)Çıktı, beklendiği gibi for döngülerinin kullanılmasıyla aynıdır.
Output [4, 256, 27, 823543] Döngü ve liste anlama yerine, Python map() işlevini, işlevi yinelenebilir bir şekilde tüm öğelere uygulamaya yardımcı olan kısa bir sözdizimi ile kullanabilirsiniz. Harita fonksiyonunun sözdizimini öğrenerek başlayalım.
Python haritası() İşlev Sözdizimi

Kullanılacak genel sözdizimi Python map() işlevi aşağıdaki gibidir:
map(function, iterable_1,[iterable_2,...,iterable_n]) map() işlevi, bir işlev ve bir yinelenebilir olmak üzere en az iki bağımsız değişken alır.
Yukarıdaki sözdiziminde:
- function , bir Python işlevini veya genel olarak çağrılabilir herhangi bir Python işlevini belirtir. Buna kullanıcı tanımlı ve yerleşik işlevler, sınıflar, örnek ve sınıf yöntemleri ve daha fazlası dahildir.
- iterable , liste, tuple ve dize gibi herhangi bir geçerli Python yinelenebilirdir.
- map() işlevi, işlevi yinelenebilir içindeki her öğeye uygular .
map() işlevi ne döndürür?
Bir harita nesnesi döndürür. Daha sonra, sözdizimini kullanarak harita nesnesini bir listeye çevirebilirsiniz: list(map(function,iterable)).
Kullanım durumuna bağlı olarak, onu bir Python demetine dönüştürebilirsiniz.

Python map() fonksiyonunun sözdizimini öğrendiğinize göre, şimdi kodlama örneklerine başlayalım.
Bu öğretici ile birlikte takip etmek için Python 3.x'e sahip olmalısınız. Aksi takdirde, kod parçacıklarını Geekflare çevrimiçi Python düzenleyicisinde çalıştırabilirsiniz.
Kullanıcı Tanımlı İşlevlerle map() İşlevi Nasıl Kullanılır

#1 . Önceden, self_pow() işlevini nums listesindeki her sayıya uygulamıştık. map() fonksiyonunun sözdiziminde, self_pow fonksiyonunu ve argüman olarak liste nums iletebiliriz.
Not : Bir işlev çağrısı değil, yalnızca işlevin adını belirtmelisiniz. self_pow() değil self_pow kullanın.
map() işlevi bir harita nesnesi döndürür.
print(map(self_pow,nums)) <map object at 0x7f7d315c14d0>Daha sonra aşağıda gösterildiği gibi list() işlevini kullanarak map nesnesini bir listeye dönüştürebiliriz.
nums_pow = list(map(self_pow,nums)) print(nums_pow) İşte, nums_pow listesindeki her nums num num ile eşlendiği çıktı.
Output [4, 256, 27, 823543] # 2 . İnçleri santimetreye dönüştüren aşağıdaki inch_to_cm() işlevini göz önünde bulundurun. 1 inç = 2,54 cm .
def inch_to_cm(inch): return inch*2.54 inches listesindeki inç değerlerini santimetreye dönüştürmek için aşağıdaki kod hücresinde gösterildiği gibi map() işlevini kullanabilirsiniz.
inches = [5.54,3.4,1,25,8.2] cms = list(map(inch_to_cm,inches)) print(cms) cms listesi, santimetre cinsinden ifade edilen inç değerlerini içerir.
Output [14.0716, 8.636, 2.54, 63.5, 20.828]Yerleşik İşlevlerle map() İşlevi Nasıl Kullanılır

Bu bölümde, Python'da yerleşik işlevlerle map() 'in nasıl kullanılacağını öğreneceğiz.
#1 . Liste strings , programlama dillerinin bir listesidir. Programlama dili dizelerini büyük harfle içeren yeni bir strings_upper listesi oluşturmak istiyorsunuz.
strings = ['JavaScript','Rust','Python','Go']Yerleşik dize yöntemi
.upper()bir dize üzerinde hareket eder ve büyük harfle biçimlendirilmiş bir kopya döndürür.
strings_upper = list(map(str.upper,strings)) print(strings_upper) strings_upper listesi, büyük harfle biçimlendirilmiş liste strings içerir.
Output ['JAVASCRIPT', 'RUST', 'PYTHON', 'GO'] # 2 . Python'daki yerleşik len() işlevi, argüman olarak bir diziyi alır ve uzunluğunu döndürür. strings listesindeki dizelerin her birinin uzunluğunu bulmak için map() işlevini kullanabilir ve aşağıda gösterildiği gibi uzunluk işlevini her dizeye uygulayabiliriz.
strings_len = list(map(len,strings)) print(strings_len) Output [10, 4, 6, 2] #3 map() işlevini, demetler gibi diğer koleksiyonlarla birlikte kullanabilirsiniz.

Aşağıdaki örnek, bir evin bulunduğu yatak odası, alan ve şehir sayısı hakkında bilgi içeren bir demet içerir.
Python'da type() işlevi, herhangi bir Python nesnesinin veri türünü döndürür. Bu tanımlama grubundaki tüm öğelerin veri türünü almak için, her bir tanımlama grubu öğesinde type işlevini çağırmak için map() işlevini kullanabilirsiniz.
house = (2,758.5,'Bangalore') house_elt_type = tuple(map(type,house)) print(house_elt_type)Harita nesnesini bir demete dönüştürdük. Ayrıca bir listeye veya başka bir koleksiyona da yayın yapabilirsiniz.
Aşağıdaki çıktıda, 2, 758.5 ve Bangalore veri türlerinin sırasıyla 'int', 'float' ve 'str' olarak çıkarsandığını görüyoruz.
Output (<class 'int'>, <class 'float'>, <class 'str'>)#4 Python'da yerleşik modülleri içe aktarabilir ve modüllerde tanımlanan işlevleri kullanabilirsiniz.
Sayılar listesindeki her sayının nums hesaplamak için matematik modülündeki sqrt karekök işlevini kullanabilirsiniz.
import math nums = [30,90,34,45,97] nums_sqrt = list(map(math.sqrt,nums)) print(nums_sqrt) Output [5.477225575051661, 9.486832980505138, 5.830951894845301, 6.708203932499369, 9.848857801796104]Yukarıdaki çıktının ayrıştırılması ve takip edilmesi zordur. Her karekök değerini iki ondalık basamağa yuvarlamak isteyebilirsiniz.
Python'da Kayan Nokta Sayısı Nasıl Yuvarlanır
Bir kayan nokta değeri alan ve onu iki ondalık basamağa yuvarlayan bir round_2() fonksiyonu tanımlayalım.
def round_2(num): return round(num,2) Artık, round_2 ve nums_sqrt listesiyle map() işlevini kullanabilirsiniz.
nums_sqrt_round = list(map(round_2,nums_sqrt)) print(nums_sqrt_round) Output [5.48, 9.49, 5.83, 6.71, 9.85] Ayrıca, list nums_sqrt hesaplamak için iç harita işlevinin kullanıldığı ve yuvarlama işlemini dış harita işlevinin gerçekleştirdiği iç içe map() işlevlerini de kullanabilirsiniz.
nums_sqrt_round = list(map(round_2,list(map(math.sqrt,nums)))) print(nums_sqrt_round) Output [5.48, 9.49, 5.83, 6.71, 9.85]Çıktılar, yukarıdaki yaklaşımların her ikisinde de aynıdır. Ancak, işlevleri yukarıda gösterildiği gibi yerleştirirken kodun okunabilir ve korunabilir olduğundan emin olmalısınız.
Map() İşlevi Lambda İşlevleriyle Nasıl Kullanılır

Önceki bölümlerde, yerleşik ve kullanıcı tanımlı işlevlerle Python map() işlevinin nasıl kullanılacağını öğrendiniz. Şimdi Python'da anonim olan lambda işlevleriyle map() işlevini nasıl kullanacağınızı öğreneceksiniz.
Bazen, gövdesi yalnızca bir kod satırı içeren bir işleve sahip olursunuz ve işlevi yalnızca bir kez kullanmanız ve programın başka bir yerine başvurmamanız gerekebilir. Python'da lambda işlevi gibi işlevleri tanımlayabilirsiniz.
Not :
lambda args: expression, bir Python lambda işlevini kullanmak için genel sözdizimidir.
#1 . Aşağıdaki liste strings göz önünde bulundurun. Her dizenin ters çevrilmiş bir kopyasını içeren strings_rev listesini almak istediğinizi varsayalım.
strings = ['JavaScript','Rust','Python','Go']Dize dilimlemeyi kullanarak bir Python dizesini tersine çevirebiliriz.
Not : Bu,
str[start:stop:step]dize dilimleme ifadesinin bir genellemesidir.–
startvestopdeğerleri olmadan, dilim dizenin başından başlar ve dizenin sonuna kadar uzanır.
– Adımın negatif değerleri,stepsonundan başlayarak dilimler verir.
– Bu nedenle,str[::-1], str'nin ters bir kopyasını döndürür.
Bu lambda işlevini kullanabilirsiniz: lambda x:x[::-1] Aşağıda gösterildiği gibi harita işlevinin içinde.
strings_rev = list(map(lambda x:x[::-1],strings)) print(strings_rev)Diğer örneklerde olduğu gibi, harita nesnesini bir liste haline getiriyoruz. Çıktıda, liste dizelerindeki dizelerin her birinin tersine çevrildiğini görüyoruz.
Output ['tpircSavaJ', 'tsuR', 'nohtyP', 'oG']# 2 . Önceki bölümde, sayılar listesindeki her sayının karekökünü hesapladık ve ardından her karekök değerini iki ondalık basamağa yuvarladık.
Bunu yapmak için round_2() fonksiyonunu kullandık. Şimdi round_2() fonksiyonunu bir lambda fonksiyonu olarak yeniden yazalım ve onu aşağıda açıklanan map() fonksiyonu ile birlikte kullanalım.
nums_sqrt_round_l =list(map(lambda num:round(num,2),nums_sqrt)) print(nums_sqrt_round_l) Aşağıda görüldüğü gibi çıktı, round_2() fonksiyonunu kullanarak elde ettiğimizle aynıdır.
Output [5.48, 9.49, 5.83, 6.71, 9.85]Birden Çok Yinelenebilir ile map() İşlevi Nasıl Kullanılır

Gördüğümüz örneklerde, tam olarak bir yinelenebilir öğenin tüm öğelerine bir işlev uyguladık.
Bazen iki veya daha fazla argüman alan fonksiyonlarımız olabilir. Bu durumda, her argüman bir listede veya benzer bir koleksiyonda saklanır.
Python map() işlevini birden çok listeyle de kullanabiliriz.
#1 . length ve breadth girdi olarak kabul eden ve alanı, length*breadth döndüren aşağıdaki area() işlevini göz önünde bulundurun.
def area(length,breadth): return length*breadth Farklı dikdörtgenlerin lengths ve breadths , sırasıyla uzunluklar ve genişlikler olmak üzere iki ayrı listede saklanır.
lengths = [4,8,10,18] breadths = [9,4,6,11] Hem lengths hem de breadths listelerini geçerek yukarıdaki listelerde alan işlevini uygulamak için map() işlevini kullanabiliriz.
areas = list(map(area,lengths,breadths)) print(areas) İşlev alanı iki bağımsız değişkeni kabul ettiğinden, uzunluk ve genişlik değerleri, sırasıyla lengths breadths listelerinden kullanılır.
Output [36, 32, 60, 198]# 2 . Python matematik modülü, bir sayının herhangi bir tabana göre logaritmasını hesaplamamıza yardımcı olan log işlevine sahiptir.
Not : log(x, base) log x değerini, base , log base x değeri tarafından belirtilen tabana döndürür. Taban belirtilmemişse, varsayılan taban değeri e'dir (log, doğal logaritmayı hesaplar).
Bu örnekte:
-
xlistesi, logaritmasını hesaplamak istediğiniz değerlere karşılık gelir. -
baseliste, logaritma hesaplamasında kullanılacak tüm temel değerleri içerir.
x = [2,6,12,10] base = [2,3,2,5] Yeni liste log_x almak için math.log , listeler, x ve base ile Python map() işlevini aşağıdaki gibi kullanabiliriz.
log_x = list(map(math.log,x,base)) print(log_x)İşte çıktı.
Output [1.0, 1.6309297535714573, 3.5849625007211565, 1.4306765580733933]Çözüm
İşte bu eğitimde öğrendiklerinizin bir özeti:
- Python map() işlevi en az iki argüman alır: map(function, iterable(s)) sözdizimine sahip bir işlev ve bir yinelenebilir.
- İşlev , çağrılabilir herhangi bir geçerli Python olabilir.
- İşlev k bağımsız değişken aldığında, işlevle
map()işlevini ve yinelenebilir bir biçimde k bağımsız değişkenlerinin her birini kullanın.
Ardından, Python'da kümelerle çalışmayı öğrenin.
