Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
1 beğenilme 0 beğenilmeme
769 kez görüntülendi
Genel olarak, $L =[i_1,\dots, i_n]$ bir liste olsun ve $f$ de $L$'nin elemanlarına uygulanabilen bir fonksiyon olsun. Elemanları $L$ listesinin elemanlarına $f$'in uygulanmış halleri olan liste nasıl bulunur? Yani

$kod(L) = [f(i_1),\dots, f(i_n)]$

sonucunu verecek kod nedir?
Veri Bilimi kategorisinde (3.7k puan) tarafından 
tarafından düzenlendi | 769 kez görüntülendi

2 Cevaplar

1 beğenilme 0 beğenilmeme
En İyi Cevap

L bir __iter__() methoduna sahip python objesi olsun olsun

  • [ f(i) for i in L ] size L objesindeki her elemana f fonksyonunu uygularsaniz elde edeceginiz listeyi verir.

  • [ f(i) for i in L if kosul ] size L objesindeki kosulu saglayan her elemana f fonksyonunu uygularsaniz elde edeceginiz listeyi verir.
  • { f(i) for i in L } size bir Set verir (if eklenebilir sonuna gene )

  • { keys:f(vals) for key,vals in L } size bir Dictionary verir. ( if eklenebilir sonuna gene)

  • ( f(i) for i in L ) size bir Generator verir.

Genel olarak konseptin ingilizce adi List of Comprehensions.

 

(1.6k puan) tarafından 
tarafından seçilmiş
Python'da __iter__() methodu nedir?
2 beğenilme 0 beğenilmeme

Python'un kendi kütüphanesinde doğrudan bulunan map fonksiyonu ile bu mümkündür. Kullanım şekli:

'''f bir fonksiyon, l bir liste'''
map(f, l)

biçimindedir. Ama bu kod tek başına listemizi oluşturmaz. Bu kod listeye dönüştürülebilir bir map objesi yaratır. Bu map objesini list() fonksiyonu ile listeye dönüştürebiliriz. 

l = ['asdsf', 'asgbfdg','etqweygharhg'] 
deneme = map(len,l)
print(deneme)
>>> <map object at 0x00000287890AC808 gibi bir adres>
yeniListe = list(map(len,l))
print(yeniListe)
>>> [5,7,12]

Bu şekilde bir fonksiyonu başka ötelenebilir (iterable) objelere de uygulanabilir. Yani tuple, dictionary gibi data tiplerine de uygulanabilir. Örneğin:

 

notlar = {'adil' : 70, 'mehmet' : 93, 'sinem' : 28}
''' Son soru notlanmamış, herkesin notuna 5 puan eklemek gerek'''
notlar = dict(map(lambda kv: (kv[0], kv[1]+5), notlar.items()))
print(notlar)
>>> notlar = {'adil' : 75, 'mehmet' : 98, 'sinem' : 33}

 

(3.7k puan) tarafından 
tarafından düzenlendi
20,284 soru
21,823 cevap
73,508 yorum
2,568,859 kullanıcı