Direkt zum Inhalt

Python filter(): Behalte, was du brauchst

Lerne, wie du die filter()-Funktion von Python nutzt, um Elemente aus Listen oder anderen Iterablen zu extrahieren. Verstehe die wichtigsten Unterschiede zwischen Filtern und ähnlichen Python-Tools.
Aktualisierte 27. Juni 2025  · 7 Min. Lesezeit

Filtern ist eine der häufigsten Aufgaben in Python, deshalb macht Python es dir leicht. Eine der einfachsten Möglichkeiten, Daten zu filtern, ist die eingebaute Funktion filter(). Wie der Name schon sagt, kannst du mit filter() nur die Artikel herausziehen, die eine bestimmte Bedingung (oder Bedingungen) erfüllen.

In diesem Leitfaden erfährst du, wie sie funktioniert, wann du sie einsetzen solltest und wie sie im Vergleich zu anderen Filterwerkzeugen funktioniert. Lies mal!

Was Python filter() macht

filter() kannst du Elemente aus einer Liste, einem Tupel oder einer beliebigen Iterablen herausziehen, aber nur, wenn sie deinen Test bestehen. Du gibst eine Funktion an (manchmal wird sie auch Prädikat genannt), die jedes Element aufnimmt und True oder False zurückgibt. Wenn der Test bestanden wird (sprich: wenn deine Funktion True zurückgibt), behält filter() sie. Andernfalls wird das Element übersprungen. Das ist ziemlich selbsterklärend, also lass uns weitermachen.

Python filter() Syntax

Hier ist das Format:

filter(function, iterable)
  • function: Legt die Prüfung fest, die du auf jedes Element anwenden willst. Sie sollte ein Argument annehmen und True oder False zurückgeben.

  • iterable: Liefert eine Liste, ein Tupel, einen String oder ein beliebiges Objekt, über das du eine Schleife ziehen kannst.

Wenn du filter() aufrufst, wird ein spezielles Filterobjekt zurückgegeben, nicht direkt eine Liste oder ein Tupel. Um mit den gefilterten Ergebnissen zu arbeiten, verpackst du die Ausgabe normalerweise in eine Liste oder ein Tupel. Diese Entscheidung sorgt dafür, dass filter() effizient bleibt, aber es ist etwas, das du beim Schreiben deines Codes im Hinterkopf behalten solltest.

Python filter() Beispiele

Lass uns ein bisschen üben.

Python filter() mit einer eigenen Funktion

Verwenden wir filter() mit einer Funktion, die wir für uns selbst schreiben.

Angenommen, du willst nur die geraden Zahlen aus einer Liste behalten:

def is_even(num):
    return num % 2 == 0

numbers = [1, 2, 3, 4, 5, 6]
result = filter(is_even, numbers)
print(list(result))

Dies wird gedruckt:

[2, 4, 6]

Beachte, wie is_even prüft, ob eine Zahl durch 2 teilbar ist. filter() nutzt unsere benutzerdefinierte Funktion, um jedes Element zu testen und die zu behalten, die unseren Test bestehen.

Python filter() mit Lambda-Funktionen

Natürlich braucht nicht jeder Filter eine vollständige Funktionsdefinition. Manchmal ist deine Filterregel so einfach oder so spezifisch für eine Stelle, dass die Definition einer benannten Funktion zu viel Arbeit ist.

Hier ist dasselbe Beispiel mit geraden Zahlen, aber mit einem Lambda für einen präzisen In-Place-Test:

numbers = [1, 2, 3, 4, 5, 6] 
result = filter(lambda x: x % 2 == 0, numbers) 
print(list(result))

Du erhältst die gleiche Ausgabe wie zuvor.

Die Verwendung von Lambdas mit filter() ist besonders dann üblich, wenn du deinen Code kurz und konzentriert halten willst. Sie eignet sich hervorragend für einmalige Filteraufgaben, denn so kannst du deine Regel genau dort ausdrücken, wo du sie brauchst.

Python filter() mit None als Funktion

Manchmal möchtest du filter() leere oder falsche Werte ausschließen. Dinge wie 0, leere Zeichenketten, None oder False, und wir wollen das tun, ohne eine eigene Funktion zu schreiben.

Python hat dafür einen Trick: Wenn du das Funktionsargument in filter() auf None setzt, entfernt filter() automatisch alle Elemente, die Python als False betrachtet.

Hier ist ein Beispiel:

items = [0, 1, '', 'hello', [], [2, 3], None, False, True] 
result = filter(None, items) 
print(list(result))

Dies wird gedruckt:

[1, 'hello', [2, 3], True]

Textdaten filtern

Jetzt wollen wir filter() auf ein praktisches, alltägliches Problem anwenden. Angenommen, du hast eine Liste von Wörtern und willst nur die, die mit "a" beginnen. Diese Art des gezielten Filterns kommt bei der Textverarbeitung immer wieder vor.

words = ['apple', 'banana', 'apricot', 'cherry', 'avocado'] 
result = filter(lambda word: word.startswith('a'), words) 
print(list(result))

Du bekommst:

['apple', 'apricot', 'avocado']

Filtern mit mehreren Bedingungen

Manchmal werden deine Filterkriterien etwas komplexer. Was ist, wenn du Gegenstände brauchst, die mehrere Bedingungen erfüllen? Hier siehst du, wie du das mit einem Lambda machen kannst. In diesem Beispiel geht es darum, Zahlen zu finden, die gerade und größer als 10 sind.

numbers = [4, 10, 12, 15, 20, 23, 28] 
result = filter(lambda x: x % 2 == 0 and x > 10, numbers) 
print(list(result))

Dies druckt:

[12, 20, 28]

(Wenn ich noch mehr Bedingungen hätte, würde ich der Übersichtlichkeit halber von einem Lambda zu einer benannten Funktion wechseln).

filter() vs. Liste Verstehen

Listen sind eine weitere beliebte Methode, um Elemente auszuwählen. Mit beiden Ansätzen kannst du Daten filtern, aber jeder hat seinen eigenen Stil.

Hier ist wieder das Beispiel mit den geraden Zahlen, diesmal mit einem Listenverständnis:

numbers = [1, 2, 3, 4, 5, 6] 
result = [x for x in numbers if x % 2 == 0] 
print(result)
[2, 4, 6]

Sowohl filter() als auch List Comprehensions erledigen die Arbeit. Listen sind bei einfachen Filtern oft leichter zu lesen, besonders wenn die Regel kurz und einfach ist.

Auf der anderen Seite funktioniert filter() gut, wenn du bereits mit Funktionen arbeitest oder wenn du mehrere Verarbeitungsschritte miteinander verketten willst.

Erweiterte Einsatzmöglichkeiten

Lass uns versuchen, noch ein paar interessante Fälle zu finden:

filter() mit anderen Iterablen

So wie wir es mit Listen gemacht haben, funktioniert filter() auch mit allen iterierbaren Größen, wie Tupeln, Mengen und sogar Generatorausdrücken. Das ist gut zu wissen, denn deine Daten werden nicht immer in Listenform vorliegen.

Hier siehst du, wie du ein Tupel filtern kannst:

numbers = (10, 15, 20, 25, 30) 
result = filter(lambda x: x > 20, numbers) 
print(tuple(result))

Dies wird gedruckt:

(25, 30)

Vergiss nicht, das Filterobjekt in den gewünschten Typ (Liste, Tupel usw.) umzuwandeln, wenn du die Ergebnisse direkt verwenden willst.

Da ich auch Generatoren erwähnt habe, zeige ich der Vollständigkeit halber auch ein Beispiel für das Filtern mit Generatoren:

numbers = (x for x in range(10))
result = filter(lambda x: x % 2 == 0, numbers)
print(list(result))

Dies ist ein Generator, denn diese Zeile: numbers = (x for x in range(10)) erzeugt ein Generator-Objekt. (Es ist faul und generiert nicht alle Werte auf einmal).

Die letzte Zeile: print(list(result)) erzwingt die Auswertung, indem sie das Lazy-Filter-Objekt in eine Liste umwandelt.

Kombination von filter() mit map()

Was ist, wenn du deine Daten sowohl filtern als auch umwandeln willst, z. B. wenn du in unserem nächsten Beispiel nur die geraden Zahlen in einer Liste quadrieren willst?

Python macht es dir leicht, indem es dir erlaubt, filter() und map() zu kombinieren. Zuerst wählt filter() die gewünschten Artikel aus und dann wendet map() eine andere Funktion auf jeden einzelnen an.

So sieht das in der Praxis aus:

numbers = [1, 2, 3, 4, 5, 6] 
evens = filter(lambda x: x % 2 == 0, numbers) 
squared = map(lambda x: x ** 2, evens) 
print(list(squared))

Dies druckt:

[4, 16, 36]

Durch die Verkettung von filter() und map() kannst du übersichtliche, lesbare Datenpipelines erstellen, indem du zuerst die Elemente auswählst, die dich interessieren, und sie dann nach Bedarf umwandelst. Es wird Möglichkeiten geben, dieses Muster in deiner eigenen Arbeit zu verwenden.

Dinge, auf die du achten solltest

So praktisch filter() auch ist, es gibt ein paar Fehler, die Menschen machen:

  • filter() gibt ein Filterobjekt zurück, keine Liste. Das kann dich aus dem Konzept bringen, wenn du erwartest, dass du sofort Ergebnisse siehst. Schließe sie immer in eine Liste (oder ein Tupel) ein, wenn du die Ergebnisse sehen oder wiederverwenden willst.

  • filter() funktioniert immer nur mit einer Iterablen zur gleichen Zeit. Wenn du nach mehreren Listen filtern willst, musst du sie zusammenfassen oder eine andere Methode verwenden.

  • filter() ist faul. Die Daten werden erst dann verarbeitet, wenn du sie in eine Liste oder ein Tupel umwandelst oder eine Schleife über sie ziehst. Behalte dieses Verhalten beim Debuggen im Hinterkopf.

Fazit

Wie du gesehen hast, kannst du mit der Funktion filter() in Python schnell Daten bereinigen, indem du nur das herausziehst, was wichtig ist. filter() hilft dir, wenn du ein einmaliges Lambda schreibst oder eine benannte Funktion einfügst. 

Wenn dir nicht klar ist, wie du filter() nutzen kannst, oder wenn du denkst, dass das einfach genug war und du weiter lernen willst, haben wir tolle Ressourcen, die dir helfen. Ich empfehle unseren Lernpfad Python Programming Fundamentals


Josef Waples's photo
Author
Josef Waples

Python Filter FAQs

Was macht die Python-Funktion filter()?

Die Funktion filter() nimmt eine Funktion und eine Iterable und gibt eine neue Iterable zurück, die nur die Elemente enthält, die einen Test bestehen. Die Testfunktion sollte True für Artikel zurückgeben, die du behalten willst, und False für solche, die du auslassen willst.

Warum muss ich das Ergebnis von filter() in list() oder tuple() verpacken?

filter() gibt ein Filterobjekt zurück, das ein Iterator ist. Um die gefilterten Ergebnisse anzuzeigen oder wiederzuverwenden, wirst du sie normalerweise mit list() oder tuple() in eine Liste oder ein Tupel umwandeln. Dieser Schritt ist wichtig, um das Ergebnis zu drucken, zu debuggen oder an andere Funktionen zu übergeben.

Kann ich filter() verwenden, ohne eine eigene Funktion zu schreiben?

Ja. Du kannst eine Lambda-Funktion für kurze, einmalige Tests verwenden oder None als Funktionsargument übergeben, um automatisch alle "falschen" Werte wie 0, '', None und False zu entfernen.

Wie verhält sich filter() im Vergleich zu List Comprehensions?

Sowohl filter() als auch List Comprehensions ermöglichen es dir, Daten zu filtern, aber List Comprehensions sind für einfache Bedingungen oft besser lesbar. filter() ist nützlich, wenn du Logik über Funktionen wiederverwendest oder mit Tools wie map() verkettest.

Kann ich mit filter() mehrere Bedingungen anwenden?

Auf jeden Fall. Du kannst mehrere Bedingungen mit logischen Operatoren innerhalb deiner Testfunktion oder deines Lambdas kombinieren. Für komplexe Logik ist es oft besser, eine benannte Funktion zu verwenden, damit der Code lesbar bleibt.

Themen

Lerne Python mit DataCamp

Kurs

Introduction to Python

4 Std.
6.3M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Arten von KI-Agenten: Ihre Rollen, Strukturen und Anwendungen verstehen

Lerne die wichtigsten Arten von KI-Agenten kennen, wie sie mit ihrer Umgebung interagieren und wie sie in verschiedenen Branchen eingesetzt werden. Verstehe einfache reflexive, modellbasierte, zielbasierte, nutzenbasierte, lernende Agenten und mehr.
Vinod Chugani's photo

Vinod Chugani

14 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Mehr anzeigenMehr anzeigen