Merhabalar
Python programlama derslerine "List Comprehension" kavramı üzerinden devam ediyoruz. "List Comprehension", özetle otomatik olarak liste oluşturma şeklidir.
List Comprehension'un genel yazımı aşağıdaki gibidir :
Bu yapı aslında iki bölümden oluşur : "expression" kısmı ve for döngüsü
"expression" olarak geçen kısım bir formül olabileceği gibi bir değişken de olabilir. for döngüsünü zaten biliyoruz.
Mantığı ise şu şekilde : "expression" olarak geçen formülsü işlem, "sequence" olarak geçen dizisel yapının her elemanı için hesaplanıp yeni bir dizi oluşturulur.
Şimdi de uygulamasını görelim :
Uygulamada myList adında bir liste tanımladık. Liste içerisinde
item for item in range(5,10)
şeklinde bir ifade yer alıyor. İlk olarak ifadenin for döngüsü kısmına bakalım :
for item in range(5,10)
ifadesi ile oluşan döngü, 5'ten 10 kadar olan sayılar içerisinde gezinir. Ancak buna 10 dahil değildir. Yani biz bu döngünün içine bir print() metodu koysaydık:
5
6
7
8
9
şeklinde sayıları yazdırmış olurdu. for döngüsü sonunda bir dizi oluşturduğumuzu düşünürsek oluşacak dizi
[5,6,7,8,9]
şeklinde olurdu. Şimdi biraz önceki ifademize tekrar dönelim:
item for item in range(5,10)
ifadesindeki baş kısımda verilen item, for döngüsünde oluşan her bir liste elemanını temsil ettiğinden myList ile oluşturulacak liste aşağıdaki gibi olacaktır :
Liste oluşturmanın temel mantığı bu şekildedir. Genel yapıdaki expression ile ifade edilen kısım bu örneğimizde bir döngü değişkeni oldu.
"expression" ifadesi bazen bir formül de olabilir. Şimdi aşağıdaki uygulamaya bakalım :
Uygulamamızda for döngüsü ile oluşan dizi aşağıdaki gibidir :
[5,6,7,8,9]
"expression" kısmındaki formülsel kısım ise
(item * 2) + 1
şeklindedir. Bu iki ifadeyi birleştirdiğimizde; döngü ile oluşan dizinin her bir elemanını al, 2 ile çarp ve 1 ekle demektir.
5 elemanını alalım : (5 * 2 ) + 1= 11'dir. Oluşacak dizinin ilk elemanı bu şekilde hesaplanmıştır. Diğerleri de aynı şekilde hesaplanır ve yeni oluşan dizi aşağıdaki gibi olur :
Şimdilik bu kadar.
Umarım faydalı bir çalışma olmuştur.
Teşekkürler.
Kaynak belirtilmeyen görseller bana aittir. The pictures without source in the post is belong to me