List Comprehension

Kategori: Python , 03 Eylül 2019 , JanFranco


Python'da syntax'ı basit tutmak adına list comprehension yöntemini kullanabiliriz. for döngüsü kullanarak listenin elemanlarını manipüle edebileceğimiz gibi aynı işlemi 4-5 satır yerine tek satırda list comprehension yöntemi ile yapabiliriz. Örnek üzerinden görelim, bir liste oluşturalım. Bu listenin elemanlarını başka bir listeye aktaralım:


list_1 = [1, 2, 3, 4, 5]
list_2 = list()

for i in list_1:
	list_2.append(i)
Yukarıda bahsettiğim örneği şimdi list comprehension yöntemi ile yapalım:


list_1 = [1, 2, 3, 4, 5]
list_2 = [i for i in list_1]
Gördüğünüz gibi tek bir satırda hem liste oluşturdum hem de list_1 listesinin elemanlarını list_2 listesine kolayca atadım. Bir örnek daha yapalım, içinde iki eleman barındıran 3 seti bir listede depolayalım. Yeni oluşturacağımız listenin elemanları da bu setlerdeki sayıların çarpımları olsun:


list_1 = [(1, 2), (3, 4), (5, 6)]
list_2 = [i*j for (i, j) in list_1]
print(list_2)
>>
[2, 12, 30]
Örneklerle devam edelim, 1'den 10'a kadar elemanları olan bir liste oluşturalım. Yeni oluşturacağımız listenin elemanlarını ilk listeden alalım fakat elemanlar arasında 4 ve 9 olmasın:


list_1 = [i for i in range(1, 11)]
list_2 = [i for i in list_1 if not (i == 4 or i == 9)]
print(list_2)
>>
[1, 2, 3, 5, 6, 7, 8, 10]
İç içe listeler mevcutsa, yani 2 boyutlu listelerimiz mevcutsa nasıl yapacağız? İlk olarak list comprehension yöntemini kullanmadan, iki boyutlu bir listedeki elemanları başka bir listeye aktaralım:


list_1 = [[1, 2, 3], [4, 5, 6, 7, 8], [9, 10, 11, 12, 13, 14, 15]]
list_2 = list()
for i in list_1:
    for x in i:
        list_2.append(x)
print(list_2)
>>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Aynı işlemi list comprehension yöntemi ile yapalım:


list_1 = [[1, 2, 3], [4, 5, 6, 7, 8], [9, 10, 11, 12, 13, 14, 15]]
list_2 = [x for i in list_1 for x in i]
print(list_2)
>>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]


Sonraki Yazı: Functions in Python, lambda, global
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın