List Comprehension dediğimiz yapılar, liste yapıları ve genelde for döngülerinin birleşiminden oluşan, işleri tek satırda halletmemize olanak tanıyan bir yapıdır. Bu tanım oldukça anlamsız gelebilir ama örneklerle devam edersek kolayca anlayabilirsiniz. Başlayalım.
Örneğin bir listedeki değerleri başka bir listeye eklemek istiyorsunuz. Şu ana kadar öğrendikleriniz ile bunu, aşağıdaki gibi yapardınız.

Gördüğünüz üzere gayet başarılı. Ancak List Comprehension sayesinde bunu tek bir satıra indirebiliriz.

Biraz değişik bir yapı olduğunu ben de biliyorum. Ufak bir örnek daha yapalım, sonra neyin ne olduğunu anlamaya çalışalım.

Gördüğünüz gibi, bir satır ile bu meseleyi halledebiliyoruz. Şimdi, neyin ne olduğunu görelim.
liste = [] derken zaten bir liste oluşturduğumuzu biliyorsunuz. İçerisindeki for member in members ise bildiğiniz, klasik bir for döngüsü. Ancak en başta bulunan member bizi biraz sıkıntıya sokabilir.
for member in members yapısındaki 'member' ifadesi bizim değişkenimiz oluyordu ve 'members' hedefindeki liste içerisindeki her eleman sırasıyla member değişkeninin değeri oluyordu. İşte, en baştaki member de aynı işi yapıyor. Burada yaptığımız şey, for döngüsüne bir referans vermektir. Dolayısıyla burada verdiğiniz değişken, for döngüsünde verdiğiniz değişken ile aynı olmalıdır.
Kısaca ve özetle en baştaki member ifadesi, liste isimli listeye eklenecek elemanları temsil ederken for içerisindeki member, members listesinde bulunan elemanların atanacağı değişkendir. Lütfen bu cümleyi birkaç defa, sakince okuyun.
Pratik olması açısından bir örnek daha yapalım.

deneme = [member]
şeklinde bir yapı kurduktan sonra for döngüsünü giriyoruz:
deneme = [member for member in members]
Şimdi, işleri biraz daha karıştıralım. Yine bir liste içerisindeki değerleri kendileriyle çarparak bunları yeni bir listeye koyalım ama bunu eski stil ile yapalım.

Gördüğünüz gibi oldukça başarılı bir şekilde çalışıyor. Şimdi, aynı işi List Comprehension ile yapalım.

Burada, liste.append(i*i) kodunun karşılığı member*member ifadesidir. Geri kalan yerler ise tamamen aynı for döngüsü mantığıdır. İşleri biraz daha karıştırıp bu defa çift sayıları listeye ekleyelim.

Bu eski stil idi. i % 2 == 0 ifadesi ile çift sayıları buldum ve listeye ekledim. Şimdi, aynı şeyi yeni yöntemimizle yapalım.

Bu noktada referansımız değişmiyor; kendisi yine en başta duruyor. Sonrasında klasik for döngüsü geliyor. Son olarak koşulumuz, en sona geliyor. Demek ki List Comprehension ifadelerindeki sıralama şu şekilde:
referans - for döngüsü - koşul (varsa)
İşte, bu şekilde hem daha hızlı hem de daha okunabilir kodlar yazabilir, kendinizi gösterebilirsiniz.
Dilerseniz, koşul kısmına iki koşul da verebilirsiniz. Bakalım.

Bu ifade ile listedeki değerler arasından 5'ten büyük ve çift olan sayıları ele aldık; gayet verimli ve güzel bir şekilde çalıştı. Aynı zamanda iki tane for döngüsü de yazabilirsiniz:

Bu örnekte list1 ile list2 elemanlarını birbirine eşleştirdik. a değişkeninin tuttuğu değere bakarsanız i ve j değişkenlerinin bir Tuple içerisinde olduğunu görürsünüz. List Comprehension kullanırken birden fazla değişken kullanılacaksa bu şekilde bir kullanım sağlanmalıdır.
Gerisi, pratiklerinize kalmıştır. Sevgiler.
Yayınlanma Tarihi: 2022-12-19 20:38:19
Son Düzenleme Tarihi: 2022-12-22 16:06:54