So verwenden Sie die Funktion filter() in Python
Erfahren Sie, wie Sie die Funktion filter() von Python verwenden, um Elemente aus Sammlungen zu extrahieren. Vergleichen Sie den Filter mit Listenverständnissen und Lambda-Rückrufen.
Übersicht
Die Datenfilterung ist eine Kernaufgabe in der Anwendungsprogrammierung. Sie müssen häufig eine Liste durchsuchen und Elemente extrahieren, die bestimmte Kriterien erfüllen, z. B. das Extrahieren aktiver Benutzer aus einer Profildatenbank oder das Herausfiltern negativer Zahlen aus Sensorprotokollen. Python stellt zu diesem Zweck ein integriertes Funktionstool namens „filter()“ zur Verfügung.
Die Funktion „filter(function, iterable)“ benötigt eine Filterfunktion und eine Iterable als Argumente. Das Funktionsargument muss für jedes Element einen booleschen Wert („True“ oder „False“) zurückgeben. Die Funktion „filter()“ wertet jedes Element aus, behält nur diejenigen bei, die als „True“ ausgewertet werden, und gibt ein Iteratorobjekt (ein „Filter“-Objekt) zurück, das die Ergebnisse enthält.
Wie „map()“ wertet „filter()“ Elemente langsam aus. Wenn Sie sofort eine Standardliste benötigen, wandeln Sie die Ausgabe mit dem Konstruktor „list()“ um: „list(filter(func, data))“. Wenn Sie „None“ als Funktionsparameter übergeben (z. B. „filter(None, data)“), filtert Python automatisch alle Elemente heraus, die falsch sind, was eine tolle Abkürzung zum Löschen leerer Werte ist.
Code- und Ausführungsausgabe
Dieses Skript demonstriert das Filtern numerischer Arrays, das Extrahieren von Wörterbuchelementen und das Verwerfen falscher leerer Zeichenfolgen mit filter().
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)Positives only: [3, 8]
Words longer than 4 chars: ['elephant', 'giraffe']
Falsy values removed: ['hello', 'world', 'active']Schrittweise Umsetzung
- Definieren Sie eine Funktion, die ein Element akzeptiert und einen booleschen Wert zurückgibt, der die Filterkriterien darstellt.
- Rufen Sie filter(function, iterable) auf, um einen Lazy-Iterator von Übereinstimmungen zu erstellen.
- Wandeln Sie das resultierende Filterobjekt mit list(filter(...)) in eine Liste um, wenn Sie die Datensätze bearbeiten müssen.
- Übergeben Sie None als Funktionsargument, um alle falschen Werte (wie None, 0 und leere Zeichenfolgen) herauszufiltern.
Häufig gestellte Fragen
Was passiert, wenn die an filter() übergebene Funktion keinen booleschen Wert zurückgibt?
Python bewertet die Wahrhaftigkeit des zurückgegebenen Werts. Wenn der Wert in einem booleschen Kontext „True“ ergibt, wird das Element beibehalten.
Sollte ich filter() oder ein Listenverständnis verwenden?
Ein Listenverständnis mit einer if-Bedingung (z. B. [x für x in der Liste if-Bedingung]) wird aus Gründen der Lesbarkeit oft bevorzugt, aber filter() ist sauber und hochleistungsfähig, insbesondere wenn vorhandene integrierte Funktionen verwendet werden.
Verwandte Themen
Erfahren Sie, wie Sie Lambda-Funktionen in Python verwenden. Beherrschen Sie anonyme Funktionen, Inline-Rückrufe und das Sortieren von Listendaten mit Lambda-Schlüsseln.
So verwenden Sie das Listenverständnis in PythonErfahren Sie, wie Sie Listenverständnisse in Python verwenden. Schreiben Sie prägnante Schleifen, wenden Sie bedingte Filter an und erstellen Sie Matrizen mit klarer visueller Syntax.
So verwenden Sie die Funktion „map()“ in PythonErfahren Sie, wie Sie die Funktion „map()“ von Python verwenden. Beherrschen Sie die Anwendung von Funktionen auf Iterables, ohne Schleifen zu schreiben, und vergleichen Sie Karten- und Listenverständnisse.
Empfohlene Python-Ressourcen
Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.
Python-Funktionen
Beherrschen Sie Python-Funktionen. Erfahren Sie, wie Sie mit def wiederverwendbaren Code schreiben, Argumente definieren, Werte zurückgeben und den lokalen und globalen Bereich verstehen.
Spickzettel für Funktionen des Python-Mathemoduls
Kurzanleitung für die Python-Mathe-Standardbibliothek. Erfahren Sie, wie Sie trigonometrische, logarithmische, rundende und arithmetische Funktionen verwenden.
Python vs. JavaScript: Welche Programmiersprache ist die beste?
Ein umfassender Vergleich zwischen Python und JavaScript. Entdecken Sie Syntaxunterschiede, Leistung, Anwendungsfälle (Backend vs. Frontend) und Codierungsbeispiele.