CodeBlanks Logo Icon CodeBlanks

Filtreli comprehension

[x for x in xs if cond] ile filtreli comprehension'ı öğrenirsin.

Filtreli comprehension

Comprehension'e bir if koşulu ekleyerek elemanları filtreleyebilirsin:

evens = [n for n in [1, 2, 3, 4] if n % 2 == 0]
# [2, 4]

Yapı: [ifade for değişken in liste if koşul]. Koşul True olan elemanlar sonuçta kalır. Koşul her eleman için ayrı değerlendirilir.

Filtre, döngü icerisinde if ile eleman eklemekten daha kısa bir yazımdır.

Birden fazla koşul

Birden fazla koşulu and veya or ile birleştirebilirsin:

result = [n for n in range(20) if n % 2 == 0 and n % 3 == 0]
# [0, 6, 12, 18]

Her iki koşul da True olmalı. Bu, klasik döngüyle yapilabilecek her filtreleme işini comprehension ile de yapabilecegini gösterir.

Uygulama Pozitif sayıları filtrele

positives değişkenine, [-3, -1, 0, 2, 5] listesinden sıfırdan büyük elemanları seçen bir comprehension ata. Sonra print(positives) yazdır.

Başlangıç kodu

main.py
# Pozitif elemanlari filtrele

Örnek çözüm

main.py
positives = [n for n in [-3, -1, 0, 2, 5] if n > 0]
print(positives)

Beklenen çıktı

[2, 5]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Çift sayıları filtrele

Soru
evens = [n for n in [1, 2, 3, 4] if n % ____ == 0]
Cevap
evens = [n for n in [1, 2, 3, 4] if n % 2 == 0]

Açıklama: n % 2 == 0 çift sayıları seçer.

2 Filtre parçalarını eşleştir

Kavram Anlamı
if Filtre kelimesi
n % 2 == 0 Çift sayı koşulu
and Ve bagaci
or Veya bagaci

3 [n for n in [1, 2, 3, 4, 5] if n > 3] ne üretir?

  • [1, 2, 3]
  • [4, 5] Doğru cevap
  • [3, 4, 5]
  • [1, 2]

Açıklama: Koşul n > 3 olduğu için sadece 4 ve 5 kalır.

Başlangıç bölümündeki tüm dersler