# 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](https://www.ionos.at/digitalguide/websites/web-entwicklung/python-iterators/) 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.

## Syntax und Parameter

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

```python
filter(function, iterable)
```

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](https://www.ionos.at/digitalguide/websites/web-entwicklung/python-tuples/) 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:

```python
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)
```

Als Ausgabe erhalten wir dann diese neue Liste:

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

## Die Python `filter()`-Function mit Strings

Natürlich funktioniert `filter()` auch mit [Python-Strings](https://www.ionos.at/digitalguide/websites/web-entwicklung/python-string/). Im folgenden Beispiel weisen wir das System an, lediglich Vokale zu berücksichtigen. Dies ist der passende Code:

```python
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)
```

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

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

## Kombination mit Lambda

Es ist möglich, die Python `filter()`-Function mit einer [Lambda-Funktion](https://www.ionos.at/digitalguide/websites/web-entwicklung/lambda-funktionen-in-python/) 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:

```python
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)
```

Wir erhalten dann die folgende Ausgabe:

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

## 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:

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

So sieht unsere Ausgabe aus:

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

## 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:

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

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

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

Tipp Automatische Framework-Erkennung, einfaches Staging und zahlreiche Funktionen: Mit [Deploy Now](https://www.ionos.at/hosting/deploy-now "Deploy Now von IONOS") 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!


This is a markdown version of: [https://www.ionos.at/digitalguide/websites/web-entwicklung/python-filter-function/](https://www.ionos.at/digitalguide/websites/web-entwicklung/python-filter-function/) for AI/LLM consumption.