Resumo : neste tutorial, você aprenderá como filtrar elementos de lista usando a função integrada do Python filter()
.
Introdução à função Python filter()
Às vezes, você precisa iterar os elementos de uma lista e selecionar alguns deles com base em critérios especificados.
Suponha que você tenha a seguinte lista de scores
:
scores = [70, 60, 80, 90, 50]
Linguagem de código: Python ( python )
Para obter todos os elementos da scores
lista onde cada elemento é maior ou igual a 70, use o seguinte código:
scores = [70, 60, 80, 90, 50]
filtered = []
for score in scores:
if score >= 70:
filtered.append(score)
print(filtered)
Linguagem de código: Python ( python )
Como funciona.
- Primeiro, defina uma lista vazia (
filtered
) que conterá os elementos dascores
lista. - Segundo, itere sobre os elementos da
scores
lista. Se o elemento for maior ou igual a 70, adicione-o àfiltered
lista. - Terceiro, mostre a
filtered
lista na tela.
Python tem uma função interna chamada filter()
que permite filtrar uma lista (ou tupla) de uma forma mais bonita.
O seguinte mostra a sintaxe da filter()
função:
filter(fn, list)
Linguagem de código: Python ( python )
A filter()
função itera sobre os elementos de list
e aplica a fn()
função a cada elemento. Ele retorna um iterador para os elementos onde fn()
retorna True
.
Na verdade, você pode passar qualquer iterável para o segundo argumento da filter()
função, não apenas uma lista.
Veja a seguir como usar a filter()
função para retornar uma lista de scores
onde cada pontuação é maior ou igual a 70:
scores = [70, 60, 80, 90, 50]
filtered = filter(lambda score: score >= 70, scores)
print(list(filtered))
Linguagem de código: Python ( python )
Saída:
[70, 80, 90]
Linguagem de código: Python ( python )
Como a filter()
função retorna um iterador, você pode usar um for
loop para iterar sobre ele. Ou você pode usar a list()
função para converter o iterador em uma lista.
Exemplo de uso da função Python filter() para filtrar uma lista de tuplas
Suponha que você tenha a seguinte lista de tuplas:
countries = [
['China', 1394015977],
['United States', 329877505],
['India', 1326093247],
['Indonesia', 267026366],
['Bangladesh', 162650853],
['Pakistan', 233500636],
['Nigeria', 214028302],
['Brazil', 21171597],
['Russia', 141722205],
['Mexico', 128649565]
]
Linguagem de código: Python ( python )
Cada elemento de uma lista é uma tupla que contém o nome e a população do país.
Para obter todos os países cujas populações são superiores a 300 milhões, você pode usar a filter()
função da seguinte forma:
countries = [
['China', 1394015977],
['United States', 329877505],
['India', 1326093247],
['Indonesia', 267026366],
['Bangladesh', 162650853],
['Pakistan', 233500636],
['Nigeria', 214028302],
['Brazil', 21171597],
['Russia', 141722205],
['Mexico', 128649565]
]
populated = filter(lambda c: c[1] > 300000000, countries)
print(list(populated))
Linguagem de código: Python ( python )
Saída:
[['China', 1394015977], ['India', 1326093247], ['United States', 329877505]]
Linguagem de código: Python ( python )
Resumo
- Use a função Python
filter()
para filtrar uma lista (ou tupla).