Como filtrar elementos de uma lista em Python

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 lista scores.
  • Em segundo lugar, repita os elementos da lista scores. Se o elemento for maior ou igual a 70, adicione-o à lista filtered.
  • 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).

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *