Mit der Python filter()-Function filtern Sie eine Iterable nach einer be­stimm­ten Bedingung und erstellen so einen neuen Iterator, der nur aus geprüften Werten besteht. Dies funk­tio­niert auch mit Strings oder zum Löschen von Null­wer­ten.

Was ist Python filter()?

Mit der Python filter()-Function ist es möglich, eine Bedingung auf eine Iterable an­zu­wen­den und so nur jene Elemente aus­zu­wäh­len, die diese erfüllen. Diese werden dann wieder als Iterator aus­ge­ge­ben. 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 Dic­tion­a­ry zu filtern, Python filter() kann jedoch besonders effizient ein­ge­setzt werden. Die Funktion erstellt lediglich ein Objekt, das auf die Ausgangs-Iterable verweist und dazu nur die be­reit­ge­stell­te Funktion sowie einen Index be­reit­stellt. Sie arbeitet dadurch deutlich platz­spa­ren­der als andere Optionen.

Managed Nextcloud by IONOS Cloud
Team­ar­beit in der eigenen Cloud
  • Voll­stän­di­ge Da­ten­sou­ve­rä­ni­tät in deutschen Re­chen­zen­tren
  • Managed Service ohne Ad­mi­nis­tra­ti­ons­auf­wand
  • File-Sharing, Do­ku­men­ten­be­ar­bei­tung & Kom­mu­ni­ka­ti­on

Syntax und Parameter

Die Syntax von Python filter() sieht fol­gen­der­ma­ß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 an­ge­wen­det wird. Es gibt einen boole­schen 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 be­rück­sich­tigt. Erfüllt das Objekt die Bedingung nicht, wird es nicht mehr mit auf­ge­führt. Die genaue Funk­ti­ons­wei­se zeigen wir Ihnen in den folgenden Ab­schnit­ten anhand von einigen prak­ti­schen Bei­spie­len.

Beispiel für Python filter()

In unserem ersten Beispiel nutzen wir eine Zah­len­rei­he und möchten nun das System anweisen, lediglich Werte zu be­rück­sich­ti­gen, die über 10 liegen. Dafür nutzen wir Python filter(). Der ent­spre­chen­de 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 funk­tio­niert filter() auch mit Python-Strings. Im folgenden Beispiel weisen wir das System an, lediglich Vokale zu be­rück­sich­ti­gen. 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 um­ge­wan­delt. Sie sieht so aus:

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

Kom­bi­na­ti­on mit Lambda

Es ist möglich, die Python filter()-Function mit einer Lambda-Funktion zu kom­bi­nie­ren. Dabei handelt es sich um eine anonyme Funktion, die vor allem lokal ein­ge­setzt 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 be­rück­sich­ti­gen. 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 an­ge­wie­sen, nur „falsy“ Werte aus­zu­fil­tern. Als „falsy“ be­zeich­net man Werte, die nach dem boole­schen Prinzip nicht wahr (true) oder falsch (false) sind, sondern statt­des­sen einen Nullwert aufweisen. Sie sind damit also im Prinzip leer. Für unser Beispiel wählen wir eine Liste von un­ter­schied­li­chen 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 ein­fachs­ten Python filter() verwenden. Der ent­spre­chen­de 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 aus­sor­tiert und lediglich jene mit einem Wert be­rück­sich­tigt. Dies sieht dann so aus:

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

Au­to­ma­ti­sche Framework-Erkennung, einfaches Staging und zahl­rei­che Funk­tio­nen: Mit Deploy Now von IONOS nutzen Sie nicht nur eine zu­ver­läs­si­ge In­fra­struk­tur, sondern deployen Ihre Website oder App auch direkt via GitHub. Wählen Sie den passenden Tarif für Ihre Zwecke!

Zum Hauptmenü