6 Python Anlamalar (Comprehensions)
6.1 Liste anlamaları (Comprehensions)
Döngüler olmadan liste oluşturmanın bir yoludur. Döngüler yerine anlamalar daha okunabilir bir çözüm olabilir. Herhangi bir liste anlaması normal döngü olarak yazılabilir.
Aşağıdaki Python döngüsü ile başlayalım. Bu döngü 0’dan 9’a kadar sayıların karelerini oluşturur. Elde edilen sayılar 0,1,4,9,…81 olmalıdır.
= []
l2 for x in range(10):
*x)
l2.append(xprint(l2)
Liste anlama kodu şu şekilde olurdu:
= [x*x for x in range(10)]
l1 print(l1)
Basit liste anlama şablonu:
[ifade for parça in yinelenebilir]
Bir başka örnek. Betiklerden oluşan bir listeyi tam sayılardan oluşan bir listeye dönüştürme
str_list = ["1", "2", "3", "4", "5"]
int_list = [int(x) for x in str_list]
Yukarıdaki örnekte görüldüğü gibi, anlamaların içerisinde fonksiyon kullanabiliriz.
= ["atilla","aydın","duru"]
name_list
= []
l2 for name in name_list:
= l2 + [name.capitalize()]
l2 print(l2)
= [name.capitalize() for name in name_list]
l1 print(l1)
6.1.1 Filtreleme
Listeyi filtrelemek yaygın bir işlemdir. Döngü sürümü:
= []
l2 for x in range(10):
if x % 3 == 1
*x)
l2.append(xprint(l2)
Liste anlamada, yinelemedeki öğeleri isteğe bağlı if ile de filtreleyebiliriz
= [x*x for x in range(10) if x % 3 == 1]
l2 print(l2)
6.2 Çift döngü örneği
Aşağıdaki kod for döngüsünü kullanarak çiftler oluşturur:
= []
pairs for i in range(3):
for c in ["a","b","c"]:
pairs.append((i, c))
print(pairs)
Anlama versiyonu daha kısadır.
= [(i, c) for i in range(3) for c in ["a","b","c"]]
pairs
print(pairs)
6.2.1 Liste anlamlara yönelik öğreticiler/vidyolar
- Güzel blog yazısı
- real python list comprehension tutorial
- İyi bir vidyo öğreticisi: Python Tutorial: List Comprehensions Step-By-Step
6.3 Sözlük Anlamaları (Comprehensions)
Sözlük Anlama, liste anlama ile oldukça benzerdir. [] yerine sözlük sembolü {} kullanılır. Aşağıdaki kod, sözlük ve for döngüsü kullanarak kareler versiyonunu oluşturur.
= {}
kareler for x in range(5):
= x * x
kareler[x]
print(kareler)
Sözlük Anlama daha kısadır.
= {x: x * x for x in range(5)}
kareler
print(kareler)
6.4 Küme Anlamaları (Set Comprehensions)
Küme anlamaları, liste anlamalarına çok benzer; kümeler oluşturmak için [] yerine {} kullanın. Kümeler oluşturduğumuz için hiçbir yineleme yoktur yani tekrar edilen eleman yoktur. Çıktı sırasız olabilir.
Aşağıdakiler liste oluşturur:
= [x % 3 for x in range(10)]
sayi_listesi print(sayi_listesi)
Aşağıdaki kod küme oluşturur
= {x % 3 for x in range(10)}
sayi_kumesi print(sayi_kumesi)
Çıktı farklı olacaktır.
- sayi_listesi: [0, 1, 2, 0, 1, 2, 0, 1, 2, 0]
- sayi_kumesi: {0, 1, 2}
Küme versiyonunda mükerrer (tekrar eden) eleman yoktur.