Python'da filter() Fonksiyonu Nasıl Kullanılır

Koleksiyonlardan öğeleri çıkarmak için Python'un filter() işlevini nasıl kullanacağınızı öğrenin. Filtreyi liste kavramaları ve lambda geri aramalarıyla karşılaştırın.

Bu Çözümü Editör'de deneyin

Genel Bakış

Veri filtreleme, uygulama programlamada temel bir görevdir. Çoğu zaman bir listede arama yapmanız ve profil veritabanından aktif kullanıcıları ayıklamak veya sensör günlüklerinden negatif sayıları filtrelemek gibi belirli kriterleri karşılayan öğeleri ayıklamanız gerekecektir. Python bu amaç için 'filter()' adında yerleşik bir işlevsel araç sağlar.

'filter(function, iterable)' işlevi, bir filtreleme işlevini ve yinelenebilir bir işlevi argüman olarak alır. İşlev bağımsız değişkeni, her öğe için bir boole değeri ("Doğru" veya "Yanlış") döndürmelidir. 'filter()' işlevi, yalnızca 'Doğru' olarak değerlendirilenleri koruyarak her bir öğeyi değerlendirir ve sonuçları içeren bir yineleyici nesne (bir 'filtre' nesnesi) döndürür.

'map()' gibi, 'filter()' da öğeleri tembel bir şekilde değerlendirir. Hemen standart bir listeye ihtiyacınız varsa, çıktıyı 'list()' yapıcısını kullanarak yayınlarsınız: 'list(filter(func, data))'. İşlev parametresi olarak 'Yok'u iletirseniz (örneğin, 'filter(None, data)'), Python sahte olan tüm öğeleri otomatik olarak filtreleyecektir; bu, boş değerleri temizlemek için harika bir kısayoldur.

Kod ve Yürütme Çıkışı

Bu komut dosyası, filter() ile sayısal dizilerin filtrelenmesini, sözlük öğelerinin çıkarılmasını ve sahte boş dizelerin atılmasını gösterir.

filter_function.py
Editör'de deneyin
numbers = [-5, -2, 0, 3, 8, -1]

# 1. Filter positive numbers using a lambda function
positives = list(filter(lambda x: x > 0, numbers))
print("Positives only:", positives)

# 2. Filter list of strings by character length
words = ["cat", "elephant", "dog", "giraffe"]
long_words = list(filter(lambda w: len(w) > 4, words))
print("Words longer than 4 chars:", long_words)

# 3. Shorthand: Remove all falsy values from a list by passing None
mixed_data = ["hello", "", "world", None, False, "active"]
clean_data = list(filter(None, mixed_data))
print("Falsy values removed:", clean_data)
Terminal Çıkışı
Positives only: [3, 8]
Words longer than 4 chars: ['elephant', 'giraffe']
Falsy values removed: ['hello', 'world', 'active']

Adım Adım Uygulama

  • Bir öğeyi kabul eden ve filtre kriterlerini temsil eden bir boole değeri döndüren bir işlev tanımlayın.
  • Eşleşmelerin tembel bir yineleyicisini oluşturmak için filter(function, yinelenebilir) öğesini çağırın.
  • Kayıtları değiştirmeniz gerekiyorsa, ortaya çıkan filtre nesnesini list(filter(...)) kullanarak bir listeye yayınlayın.
  • Tüm sahte değerleri (Yok, 0 ve boş dizeler gibi) filtrelemek için işlev bağımsız değişkeni olarak Yok'u iletin.

Sıkça Sorulan Sorular

Filter() işlevine iletilen işlev bir boole değeri döndürmezse ne olur?

Python, döndürülen değerin doğruluğunu değerlendirir. Değer Boole bağlamında True olarak değerlendirilirse öğe korunur.

Filter() veya liste kavrama kullanmalı mıyım?

If koşuluyla bir liste kavrama (örneğin, [list if koşulunda x için x]) okunabilirlik açısından sıklıkla tercih edilir, ancak filter(), özellikle mevcut yerleşik işlevler kullanıldığında temiz ve yüksek performanslıdır.

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.