Como filtrar elementos de lista em Python

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 scoreslista 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 da scoreslista.
  • Segundo, itere sobre os elementos da scoreslista. Se o elemento for maior ou igual a 70, adicione-o à filteredlista.
  • Terceiro, mostre a filteredlista 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 liste 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 scoresonde 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 forloop 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).

Deixe um comentário

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