# Python Filter()-Function: filtrar iterables según condiciones

Con la función `filter()` de Python, puedes filtrar un iterable según una determinada condición y crear así un nuevo iterador que solo conste de valores comprobados. Esto también funciona con cadenas o para eliminar valores nulos.

## ¿Qué es la Python `Filter()` Function?

Con la función `filter()` de Python es posible aplicar una **condición a un iterable** y así seleccionar solo aquellos elementos que la cumplan. Estos vuelven a salir como [iterator](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/iterators-en-python/). Se considera que la condición se cumple si no es “0” o “False”. Aunque existen otras opciones para filtrar una lista o un diccionario, por ejemplo, en Python se puede utilizar `filter()` de forma especialmente eficaz. La función solo crea un objeto que hace referencia al iterable de salida y solo proporciona la función proporcionada y un índice. Por tanto, ocupa mucho menos espacio que otras opciones.

## Sintaxis y parámetros

La sintaxis de `filter()` es la siguiente:

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

Por lo tanto, `filter()` tiene dos parámetros:

- `function`: este argumento especifica una función que se utiliza para cada elemento dentro del iterable. Devuelve un valor booleano (“True” o “False”).
- `iterable`: este parámetro especifica la secuencia a filtrar por la función `filter()`. Puede ser, por ejemplo, una lista específica, un conjunto, otro iterable o una [tupla de Python](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-tuples/).

Por lo tanto, la función comprueba cada elemento del iterable para ver si se cumple la condición. Si es “True”, el elemento se tiene en cuenta para la nueva secuencia. Si el objeto no cumple la condición, deja de aparecer en la lista. En los siguientes apartados te mostramos cómo funciona exactamente con algunos ejemplos.

## Ejemplo de `filter()` de Python

En nuestro primer ejemplo, utilizamos una serie de números y nos gustaría instruir al sistema para que solo considere los valores que son mayores que 10. Para ello utilizamos `filter()`. El código correspondiente sería el siguiente:

```python
valores = [3, 7, 9, 11, 17, 24, 25, 38, 40, 42] 
def funcion(x): 
    return x > 10 
 
números = filter(función, valores) 
lista_números = list(números) 
print(lista_números)
```

A continuación, recibimos esta nueva lista como resultado:

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

## La función `filter()` con cadenas

Por supuesto, `filter()` también funciona con [cadenas de Python](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-string/). En el siguiente ejemplo, ordenamos al sistema que solo tenga en cuenta las vocales. Este es el código indicado:

```python
valores = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 
 
def filtro_vocales(letra): 
    vocales = ['a', 'e', 'i', 'o', 'u'] 
    if letra en vocal: 
        return True 
    else: 
        return False 
 
vocales_filtradas = filter(vocales_filtradas, valores) 
vocales = tupla(vocales_filtradas) 
print(vocales)
```

Hemos convertido el resultado en una tupla. Su aspecto es el siguiente:

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

## Combinación con lambda

Es posible combinar la función `filter()` de Python con una [función lambda](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/funciones-lambda-de-python/). Se trata de una **función anónima** que se utiliza principalmente a nivel local. Para nuestro ejemplo, seleccionamos una secuencia de números y ordenamos al sistema que solo considere los números pares. Este es el código:

```python
cifras = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
nuevo_iterador = filter(lambda x: (x % 2 == 0), cifras) 
cifras_pares = list(nuevo_iterador) 
print(cifras_pares)
```

Obtendremos el siguiente resultado:

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

## La función `filter()` con `None`

Si pasas `None` como primer argumento a `filter()`, el sistema recibe instrucciones de filtrar solo valores “falsy”. El término “falsy” se utiliza para describir valores que no son verdaderos o falsos según el principio booleano, sino que **tienen un valor cero**. En principio, están vacíos. Para nuestro ejemplo, seleccionamos una lista de valores diferentes. Se trata de valores enteros, vacíos o booleanos. Luego usamos `filter()` de Python con `None` y ordenamos los valores que no cumplen nuestra condición. Este sería el código:

```python
valores = [1, 2, 3, 'x', 0, 4, True, False, 5] 
nuevo_iterador = filter(None, valores) 
nuevos_valores = list(nuevo_iterador) 
print(nuevos_valores)
```

Este sería el resultado:

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

## Eliminar cadenas vacías con `filter()`

Para eliminar cadenas vacías, la forma más sencilla de hacerlo también es con `filter()` de Python. El comando correspondiente podría tener este aspecto:

```python
frase = ['Esto', ' ', 'es', 'un', ' ', 'ejemplo', ' '] 
frase = list(filter(None, frase)) 
print(frase)
```

A continuación, las cadenas vacías se ordenan para la salida y solo se tienen en cuenta las que tienen un valor. El resultado es el siguiente:

```python
['Esto', 'es', 'un', 'ejemplo']
```

Consejo Detección automática de frameworks, puesta en escena sencilla y numerosas funciones: con [Deploy Now](https://www.ionos.es/alojamiento/deploy-now "Deploy Now de IONOS") de IONOS, no solo utilizas una infraestructura fiable, sino que también despliegas tu página web o app directamente a través de GitHub. Elige tu tarifa según tus objetivos.


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