Coletânea Python do ZERO às Redes Neurais Artificiais
Filter
Entendida a lógica da função map( ) podemos partir para a função filter( ), pois ambas são de propósitos parecidos mas de aplicações diferentes.
Vimos anteriormente que por meio da função map( ) podemos de forma
reduzida e eficiente iterar sobre algum elemento específico de uma lista ou dicionário.
Pois bem, por meio da função filter( ) também realizaremos iterações
sobre um elemento de uma lista ou dicionário, porém usando de lógica condicional.
Em outras palavras, via map( ) podemos realizar toda e qualquer iteração
sobre um determinado elemento, enquanto via filter( ) literalmente filtraremos um determinado dado/valor de um elemento quando o mesmo respeitar uma certa condição imposta.
Internamente os dados os quais serão reaproveitados pela função serão todos que, de acordo com a condição, retornem True.
Partindo para prática, inicialmente criamos uma variável de nome
pessoas, atribuída para a mesma está uma lista onde cada elemento é um par de dados em formato de dicionário, muito parecido com os exemplos usados anteriormente.
Em seguida criamos uma variável de nome idosos, que chama a função
filter( ) parametrizando a mesma com uma expressão lambda que basicamente irá ler os dados/valores de ‘idade’, mas apenas fazendo o uso dos quais tiverem este valor superior a 70.
Em seguida é repassado como segundo parâmetro a variável de onde serão extraídos tais dados, nesse caso, pessoas.
Analisando o retorno, note que foram retornados apenas os elementos os
quais em seu campo ‘idade’ o valor era maior que 70.
Assim como demonstrado em map( ), a função filter( ) também suporta
que para a mesma seja repassado como parâmetro uma função independente.
Neste outro exemplo, realizando a filtragem de valores superiores a 50,
note que para a variável nova_lista3 temos a função filter( ) por sua vez parametrizada com a função filtra, lendo dados de produtos2.
Nesse caso, o retorno nos remete aos dois elementos os quais para o
campo ‘preco’ o valor atribuído era maior que 50.