Python Filter()-Function: So filtern Sie Iterablen nach Bedingungen

Mit der Python filter()-Function filtern Sie eine Iterable nach einer bestimmten Bedingung und erstellen so einen neuen Iterator, der nur aus geprüften Werten besteht. Dies funktioniert auch mit Strings oder zum Löschen von Nullwerten.

Was ist Python filter()?

Mit der Python filter()-Function ist es möglich, eine Bedingung auf eine Iterable anzuwenden und so nur jene Elemente auszuwählen, die diese erfüllen. Diese werden dann wieder als Iterator ausgegeben. Als erfüllt gilt die Bedingung, wenn sie nicht „0“ oder „false“ ist. Zwar gibt es auch andere Optionen, um zum Beispiel eine Liste oder ein Dictionary zu filtern, Python filter() kann jedoch besonders effizient eingesetzt werden. Die Funktion erstellt lediglich ein Objekt, das auf die Ausgangs-Iterable verweist und dazu nur die bereitgestellte Funktion sowie einen Index bereitstellt. Sie arbeitet dadurch deutlich platzsparender als andere Optionen.

Managed Nextcloud by IONOS Cloud
Teamarbeit in der eigenen Cloud
  • Vollständige Datensouveränität in deutschen Rechenzentren
  • Managed Service ohne Administrationsaufwand
  • File-Sharing, Dokumentenbearbeitung & Kommunikation

Syntax und Parameter

Die Syntax von Python filter() sieht folgendermaßen aus:

filter(function, iterable)
python

Python filter() hat also zwei Parameter:

  • function: Dieses Argument gibt eine Funktion an, die für jedes Element innerhalb der Iterable angewendet wird. Es gibt einen booleschen Wert („true“ oder „false“) zurück.
  • iterable: Dieser Parameter gibt die Sequenz an, die durch die Python filter()-Function gefiltert werden soll. Es kann sich dabei zum Beispiel um eine bestimmte Liste, ein Set, eine andere Iterable oder ein Python-Tuple handeln.

Durch die Funktion wird also jedes Element der Iterable auf die Bedingung hin überprüft. Ist diese „true“, wird das Element für die neue Abfolge berücksichtigt. Erfüllt das Objekt die Bedingung nicht, wird es nicht mehr mit aufgeführt. Die genaue Funktionsweise zeigen wir Ihnen in den folgenden Abschnitten anhand von einigen praktischen Beispielen.

Beispiel für Python filter()

In unserem ersten Beispiel nutzen wir eine Zahlenreihe und möchten nun das System anweisen, lediglich Werte zu berücksichtigen, die über 10 liegen. Dafür nutzen wir Python filter(). Der entsprechende Code sieht so aus:

werte = [3, 7, 9, 11, 17, 24, 25, 38, 40, 42]
def funktion(x):
    return x > 10
zahlen = filter(funktion, werte)
zahlen_liste = list(zahlen)
print(zahlen_liste)
python

Als Ausgabe erhalten wir dann diese neue Liste:

[11, 17, 24, 25, 38, 40, 42]
python

Die Python filter()-Function mit Strings

Natürlich funktioniert filter() auch mit Python-Strings. Im folgenden Beispiel weisen wir das System an, lediglich Vokale zu berücksichtigen. Dies ist der passende Code:

werte = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
def vokale_filtern(letter):
    vokale = ['a', 'e', 'i', 'o', 'u']
    if letter in vokale:
        return True
    else:
        return False
gefilterte_vokale = filter(vokale_filtern, werte)
vokale = tuple(gefilterte_vokale)
print(vokale)
python

Die Ausgabe haben wir in ein Tuple umgewandelt. Sie sieht so aus:

('a', 'e', 'i')
python

Kombination mit Lambda

Es ist möglich, die Python filter()-Function mit einer Lambda-Funktion zu kombinieren. Dabei handelt es sich um eine anonyme Funktion, die vor allem lokal eingesetzt wird. Für unser Beispiel wählen wir dafür eine Abfolge von Zahlen aus und weisen das System an, lediglich die geraden Zahlen zu berücksichtigen. Dies ist der Code:

zahlen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
neuer_iterator = filter(lambda x: (x % 2 == 0), zahlen)
gerade_zahlen = list(neuer_iterator)
print(gerade_zahlen)
python

Wir erhalten dann die folgende Ausgabe:

[2, 4, 6, 8, 10]
python

Die filter()-Funktion mit None

Wenn Sie None als erstes Argument an Python filter() übergeben, wird das System angewiesen, nur „falsy“ Werte auszufiltern. Als „falsy“ bezeichnet man Werte, die nach dem booleschen Prinzip nicht wahr (true) oder falsch (false) sind, sondern stattdessen einen Nullwert aufweisen. Sie sind damit also im Prinzip leer. Für unser Beispiel wählen wir eine Liste von unterschiedlichen Werten. Diese sind integer, leer oder boolesche Werte. Dann nutzen wir Python filter() mit None und sortieren so die Werte aus, die nicht unsere Bedingung erfüllen. Dies ist unser Code:

werte = [1, 2, 3, 'x', 0, 4, True, False, 5]
neuer_iterator = filter(None, werte)
neue_werte = list(neuer_iterator)
print(neue_werte)
python

So sieht unsere Ausgabe aus:

[1, 2, 3, 'x', 4, True, 5]
python

Leere Strings mit Python filter() entfernen

Auch wenn Sie leere Strings entfernen möchten, können Sie dafür am einfachsten Python filter() verwenden. Der entsprechende Befehl könnte zum Beispiel so aussehen:

satz = ['Dies', ' ', 'ist', 'ein', ' ', 'Beispiel', ' ']
satz = list(filter(None, satz))
print(satz)
python

Für die Ausgabe werden dann die leeren Strings aussortiert und lediglich jene mit einem Wert berücksichtigt. Dies sieht dann so aus:

['Dies', 'ist', 'ein', 'Beispiel']
python
Tipp

Automatische Framework-Erkennung, einfaches Staging und zahlreiche Funktionen: Mit Deploy Now von IONOS nutzen Sie nicht nur eine zuverlässige Infrastruktur, sondern deployen Ihre Website oder App auch direkt via GitHub. Wählen Sie den passenden Tarif für Ihre Zwecke!

War dieser Artikel hilfreich?
Page top