# Python filter(): Como filtrar iteráveis em Python

Com a função Python filter(), você filtra um iterável com base em uma condição específica e cria um iterador que consiste apenas em valores verificados. Ela também funciona com strings ou para remover valores nulos.

## O que é a função Python `filter()`?

Com a função Python `filter()`, é possível **aplicar uma condição a um iterável** e assim selecionar apenas aqueles elementos que a atendem. Esses elementos são então retornados como iterador Python. A condição é considerada atendida se o valor não for 0 ou *false*. Embora existam outras opções para filtrar, por exemplo, uma lista ou um dicionário, a função Python `filter()` pode ser usada de maneira particularmente eficiente. A função cria um objeto que referencia o iterável original e fornece a função aplicada e um índice. Ela funciona de maneira significativamente mais econômica em termos de espaço do que outras opções.

## Sintaxe e parâmetros de Python `filter()`

A sintaxe da função Python `filter()` é a seguinte:

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

A função Python filter() tem dois parâmetros:

- `function`: Este argumento especifica uma função que será aplicada a cada elemento dentro do iterável. Ela retorna um valor booleano (“true” ou “false”).
- `iterable`: Este parâmetro especifica a sequência que será filtrada pela função Python `filter()`. Pode ser uma lista, um conjunto, outro iterável ou uma [tupla Python](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-tuples/ "Tuplas Python").

Assim, cada elemento do iterável é verificado quanto à condição. Se a condição for “true”, o elemento é considerado na nova sequência. Se o objeto não atender à condição, ele não será incluído. A forma exata de funcionamento será mostrada nos próximos tópicos com alguns exemplos práticos.

## Exemplo de Python `filter()`

No nosso primeiro exemplo, usamos uma série de números e queremos instruir o sistema a considerar apenas valores acima de 10. Para isso, usamos a função Python `filter()`. O código correspondente é:

```python
numbers = [3, 7, 9, 11, 17, 24, 25, 38, 40, 42]
def condition(x):
    return x > 10
filtered_numbers = filter(condition, numbers)
filtered_numbers_list = list(filtered_numbers)
print(filtered_numbers_list)
```

A saída será a lista:

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

## Python filter() com strings

`filter()` também funciona com [strings Python](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-string/ "Strings Python"). No exemplo a seguir, instruímos o sistema a considerar apenas as vogais. O código é:

```python
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
def is_vowel(letter):
    vowels = ['a', 'e', 'i', 'o', 'u']
    if letter in vowels:
        return True
    else:
        return False
filtered_vowels = filter(is_vowel, letters)
filtered_vowels_tuple = tuple(filtered_vowels)
print(filtered_vowels_tuple)
```

A saída foi armazenada como uma tupla:

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

## Combinar Python filter() e lambda

É possível combinar `filter()` com a [função Python Lambda](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/funcoes-lambda-em-python/ "Função Python Lambda"). Trata-se de uma **função anônima** que é usada principalmente localmente. Para nosso exemplo, escolhemos uma sequência de números e instruímos o sistema a considerar apenas os números pares. O código é:

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

Obtivemos a seguinte saída:

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

## Combinar Python filter() com None

Se você passar `None` como o primeiro argumento para a função Python `filter()`, o sistema será instruído a filtrar apenas valores *falsy*. Valores *falsy* são aqueles que, de acordo com o princípio booleano, são avaliados como *False*, incluindo 0, *False*, *None*, listas e strings vazias, entre outros. Para nosso exemplo, escolhemos uma lista de valores diversos. Estes são inteiros, vazios ou valores booleanos. Então usamos a função Python `filter()` com `None` e filtramos os valores que não atendem nossa condição. O código é:

```python
values = [1, 2, 3, 'x', 0, 4, True, False, 5]
new_iterator = filter(None, values)
new_values = list(new_iterator)
print(new_values)
```

Nossa saída será:

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

## Remover strings vazias com Python filter()

Se você quiser remover strings vazias, pode usar a função Python `filter()`. O comando correspondente é assim:

```python
sentence = ['This', ' ', 'is', 'an', ' ', 'example', ' ']
sentence = list(filter(None, sentence))
print(sentence)
```

Para a saída, as strings vazias serão filtradas e apenas aquelas com um valor serão consideradas. O resultado será:

```python
['This', 'is', 'an', 'example']
```

Dica Reconhecimento automático de frameworks, staging facilitado e uma série de funcionalidades: com o [Deploy Now](https://www.ionos.com/hosting/deploy-now "Deploy Now — IONOS") da IONOS, você não só conta com uma infraestrutura confiável, como também faz a implantação do seu site ou app diretamente pelo GitHub. Escolha o plano adequado para as suas necessidades!


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-filter/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/python-filter/) for AI/LLM consumption.