• python'un tapilasi ozelliklerinden biridir. liste tipindeki (tabii bu bir tuple veya list'in subclassi'da olabilir) bir yapinin her elemani uzerinde teker teker islem ve filtreleme yapmanizi saglar. map ve filter fonksiyonlarini tek bir yapida birlestirir. syntax'i soyledir:

    [foo(x) for x in bar if not(x is none)]
  • bir listeyi icindeki elemanlarla degil o listeyi olusturmaya yarayan bir fonksiyon/kural cumlesi ile tanimlamaya dayali bir fonksiyonel programlama dili ozelligi.

    mesela 0'dan 100'e tum cift sayilari barindiran bir sira tanimlamak icin tek tek degerleri yazmak yerine f#'ta su yazilabilir:

    let ciftsayilar = seq { for i in 0 .. 100 do if i % 2 = 0 then i }

    bunun bildigimiz programlama dillerinde ayni isi yapmaktan farki fonksiyonel programlama dilleri kullanilan veri tipine gore sadece sorgunun kullandiginiz kadarini calistirabilir. mesela bu ciftsayilar'i kullanan kodunuz sadece degeri 50'den kucuk cift sayilari ekrana basiyorsa:

    ciftsayilar |> seq.filter (fun a -> a < 50) |> print_endline

    f# derleyicisi sizin sorgu/kural cumlenizi cift sayi degeri 50'ye kadar calistirir. bu da cesitli kosullarda normal dillerde basarmasi zahmetli olan bir performans artisina acar.
  • kod okunabilirliğini (readability) arttırır ve bir for döngüsüne nazaran daha hızlıdır.
  • readability yalnızca basit durumlardan oluşan list comprehension'larda artmaktadır.

    google approved: https://google.github.io/….html#list_comprehensions
  • python'un guzelligi. bir python kodunu python yapan en baskin ozellik. ayni seyi degisik on sekilde yapabilirsiniz ama en yalin ve anlasilabilir sekilde genelde bu sekilde yapilir.
  • haskell'de de mevcut olan bir özelliktir.
hesabın var mı? giriş yap