Resumo: neste tutorial, você aprenderá como filtrar elementos de lista usando a função interna do Python filter()
.
Introdução à função filter() do Python
Às vezes, você precisa iterar sobre 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]
Para obter todos os elementos da lista scores
onde cada elemento é maior ou igual a 70, você usa o seguinte código:
scores = [70, 60, 80, 90, 50]
filtered = []
for score in scores:
if score >= 70:
filtered.append(score)
print(filtered)
Como funciona.
- Primeiro, defina uma lista vazia (
filtered
) que conterá os elementos da listascores
. - Em segundo lugar, repita os elementos da lista
scores
. Se o elemento for maior ou igual a 70, adicione-o à listafiltered
. - Terceiro, mostre a lista
filtered
na tela.
O Python possui uma função interna chamada filter()
que permite filtrar uma lista (ou uma tupla) de uma maneira mais bonita.
O seguinte mostra a sintaxe da função filter()
:
filter(fn, list)
A função filter()
itera sobre os elementos da list
e aplica a função fn()
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 função filter()
, não apenas uma lista.
Veja a seguir como usar a função filter()
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))
Saída:
[70, 80, 90]
Como a função filter()
retorna um iterador, você pode usar um loopfor
para iterar sobre ela. Ou você pode usar a função list()
para converter o iterador em uma lista.
Usando a função filter() do Python para filtrar uma lista de exemplos 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]
]
Cada elemento em uma lista é uma tupla que contém o nome e a população do país.
Para obter todos os países cuja população é superior a 300 milhões, você pode usar a seguinte função filter()
:
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))
Saída:
[['China', 1394015977], ['India', 1326093247], ['United States', 329877505]]
Resumo
- Use a função
filter()
do python para filtrar uma lista (ou uma tupla).