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.
- 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)
pythonPython 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 Pythonfilter()
-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)
pythonAls Ausgabe erhalten wir dann diese neue Liste:
[11, 17, 24, 25, 38, 40, 42]
pythonDie 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)
pythonDie Ausgabe haben wir in ein Tuple umgewandelt. Sie sieht so aus:
('a', 'e', 'i')
pythonKombination 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)
pythonWir erhalten dann die folgende Ausgabe:
[2, 4, 6, 8, 10]
pythonDie 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)
pythonSo sieht unsere Ausgabe aus:
[1, 2, 3, 'x', 4, True, 5]
pythonLeere 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)
pythonFü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']
pythonAutomatische 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!