Python — Haritala, Filtrele, Küçült
HARİTA
İlk olarak, bir harita işlevine tam olarak neden ihtiyaç duyduğumuzu ve bunun işimizi azaltmamıza ve kodumuzu daha verimli hale getirmemize nasıl yardımcı olduğunu anlayalım.
Diyelim ki aşağıdaki gibi bir listemiz var, ancak listedeki sorun şu ki, listedeki tüm öğeler dize biçimindedir, bu nedenle herhangi bir sayısal işlem yapmaya çalışırsak sonuç vermeyecektir.
l1 = ["3","5","9","12","25"]
x = l1[0]+1
print(x)
----------------------------------------------------------------------
-----
TypeError Traceback (most recent call
last)
Input In [1], in <cell line: 2>()
1 l1 = ["3","5","9","12","25"]
----> 2 x = l1[0]+1
3 print(x)
TypeError: can only concatenate str (not "int") to str
Şimdi bunun bir yolu for döngüsü, bir bakalım
for i in range(len(l1)):
l1[i] = int(l1[i])
x = l1[0]+1
print(x)
4
l2 adlı başka bir liste alacağız ve aynı işlemi tekrar yapacağız.
l2 = ["3","5","9","12","25"]
l2 = list(map(int,l2))
y = l2[0]+1
print(y)
4
Şimdi birkaç örneğe daha göz atalım, tüm listenin kare değerlerini bulmak istediğimizi varsayalım, bunu map fonksiyonu yardımıyla nasıl yapabileceğimize bakalım.
İlk olarak, verilen bir sayının karesini alacak bir 'sq' fonksiyonu yazalım.
def sq(a):
return a*a
l3 = [3,5,7,2,9]
l4 = list(map(sq,l3))
print(l4)
[9, 25, 49, 4, 81]
Şimdi daha karmaşık bir şeye bakalım, şimdi elde etmeye çalıştığımız şey, bir listede saklanan 0,8'den sayıların karesini ve küpünü almak. Şimdi kare ve küp fonksiyonlarını tanımlamak için harita fonksiyonunu, lambda fonksiyonunu ve ayrıca def anahtar kelimemizi kullanacağız. Ardından listeyi oluşturmak için bir for döngüsü kullanacağız.
def sq(a):
return a*a
def cube(a):
return a*a*a
func = [sq,cube]
for i in range(8):
rslt = list(map(lambda x:x(i) ,func))
print(rslt)
[0, 0]
[1, 1]
[4, 8]
[9, 27]
[16, 64]
[25, 125]
[36, 216]
[49, 343]
Adından da anlaşılacağı gibi, filter işlevi, belirli bir yinelenebilirler kümesini filtrelememize yardımcı olur, bir bağımsız değişken olarak, yinelemelerimizi filtreleyeceğimiz belirtilen işlevi alır ve sonra yinelemeleri bağımsız değişkenler olarak alır. Aşağıda 3 tür filtre verilmiştir, biri listeden 10'dan büyük sayıları filtreleyecek, biri 10'dan küçük sayıları filtreleyecek ve biri sayının 10'dan büyük ancak 15'ten küçük olması gerektiğini belirten çoklu koşullandırmaya sahip olacaktır.
l1 = [34,12,5,8,11,14,19,10,1,50]
def grt_condi(num):
return num>10
def lsr_condi(num):
return num<10
def multi_condi(num):
return num>10 and num<15
l2 = list(filter(grt_condi,l1))
l3 = list(filter(lsr_condi,l1))
l4 = list(filter(multi_condi,l1))
print(l2)
print(l3)
print(l4)
[34, 12, 11, 14, 19, 50]
[5, 8, 1]
[12, 11, 14]
Azaltma işlevinin ne işe yaradığını ve hangi sorunu çözdüğünü anlayalım, bunu anlamak için önce bir sorun bildirimini ve bunu çözmek için geleneksel yolumuzu ele alalım.
Diyelim ki bir liste var ve listede bulunan tüm tam sayıların toplamını almak istiyoruz.
l6 = [2,3,6,5,8,9,10]
x = 0
for i in l6:
x = x+i
print(x)
43
from functools import reduce
l7 = reduce(lambda x,y:x+y , l6)
print(l7)
43
Bu tür daha fazla içerik için lütfen Medium profilimi ve LinkedIn sayfamı takip edin —https://www.linkedin.com/in/chandan-sengupta/

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































