Cara Menggunakan Fungsi filter() dengan Python

Pelajari cara menggunakan fungsi filter() Python untuk mengekstrak elemen dari koleksi. Bandingkan filter dengan pemahaman daftar dan panggilan balik lambda.

Coba Solusi ini di Editor

Ikhtisar

Pemfilteran data adalah tugas inti dalam pemrograman aplikasi. Anda sering kali perlu menelusuri daftar dan mengekstrak elemen yang memenuhi kriteria tertentu, seperti mengekstraksi pengguna aktif dari database profil, atau memfilter angka negatif dari log sensor. Python menyediakan alat fungsional bawaan bernama `filter()` untuk tujuan ini.

Fungsi `filter(function, iterable)` menggunakan fungsi pemfilteran dan iterable sebagai argumen. Argumen fungsi harus mengembalikan nilai boolean (`True` atau `False`) untuk setiap elemen. Fungsi `filter()` mengevaluasi setiap elemen, hanya mempertahankan elemen yang bernilai `True`, dan mengembalikan objek iterator (objek `filter`) yang berisi hasilnya.

Seperti `map()`, `filter()` mengevaluasi elemen dengan malas. Jika Anda memerlukan daftar standar dengan segera, Anda melemparkan output menggunakan konstruktor `list()`: `list(filter(func, data))`. Jika Anda meneruskan `Tidak Ada` sebagai parameter fungsi (misalnya, `filter(Tidak Ada, data)`), Python akan secara otomatis memfilter semua elemen yang salah, yang merupakan cara singkat yang bagus untuk menghapus nilai yang kosong.

Kode & Output Eksekusi

Skrip ini mendemonstrasikan pemfilteran array numerik, mengekstraksi item kamus, dan membuang string kosong palsu dengan filter().

filter_function.py
Coba di Editor
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)
Keluaran Terminal
Positives only: [3, 8]
Words longer than 4 chars: ['elephant', 'giraffe']
Falsy values removed: ['hello', 'world', 'active']

Implementasi Langkah demi Langkah

  • Tentukan fungsi yang menerima elemen dan mengembalikan nilai boolean yang mewakili kriteria filter.
  • Panggil filter(function, iterable) untuk membuat iterator pertandingan yang malas.
  • Keluarkan objek filter yang dihasilkan ke daftar menggunakan list(filter(...)) jika Anda perlu memanipulasi catatan.
  • Berikan Tidak Ada sebagai argumen fungsi untuk memfilter semua nilai palsu (seperti Tidak Ada, 0, dan string kosong).

Pertanyaan yang Sering Diajukan

Apa yang terjadi jika fungsi yang diteruskan ke filter() tidak mengembalikan boolean?

Python mengevaluasi kebenaran nilai yang dikembalikan. Jika nilainya bernilai True dalam konteks boolean, elemen tersebut dipertahankan.

Haruskah saya menggunakan filter() atau pemahaman daftar?

Pemahaman daftar dengan kondisi if (misalnya, [x untuk x dalam kondisi daftar if]) sering kali lebih disukai agar mudah dibaca, namun filter() bersih dan berperforma tinggi, terutama saat menggunakan fungsi bawaan yang sudah ada.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.