Neste post, discutiremos três métodos de filtragem de listas em Python. Especificamente, iremos caminhar através de como utilizar a compreensão de listas, expressões geradoras e o método ‘filter()’ incorporado para filtrar listas em python.
P>Vamos começar!
p>P>Posto que temos dados numa lista e queremos extrair valores ou reduzir a lista com base em alguns critérios. Especificamente, vamos considerar a seguinte lista que contém uma lista de encargos médicos com alguns valores em falta:
medical_charges =
print(medical_charges)

Para começar, podemos utilizar a compreensão da lista para filtrar os valores “Nenhum”:
medical_charges =
print(medical_charges)

Podemos também converter os elementos da lista em números inteiros com uma ligeira alteração na compreensão da lista:
medical_charges =
print(medical_charges)

p>Upon convertendo cada elemento num número inteiro, também podemos filtrar com base na magnitude de cada número inteiro. Suponhamos que queremos manter taxas superiores ou iguais a 500 dólares, podemos escrever a seguinte lista de compreensão:
medical_charges =
print(medical_charges)

FILTRAR UTILIZANDO GENERADORES
Se estivermos a lidar com uma quantidade significativa de dados, que é frequentemente o caso dos registos médicos, podemos filtrar iterativamente usando uma expressão geradora. Se quisermos converter a nossa lista original utilizando uma expressão geradora, fazemos o seguinte :
charges = (int(n) for n in medical_charges if n != None)
print(charges)

A principal diferença de sintaxe, da compreensão da lista, sendo a utilização de parênteses em vez de parênteses rectos. Podemos agora iterar sobre o gerador:
for charge in charges:
print(charge)

FILTRANTE UTILIZANDO ‘LISTA()’ E ‘FILTRO()’ MÉTODOS
Há alturas em que os critérios de filtragem não podem ser facilmente expressos usando a compreensão da lista ou expressões geradoras. Consideremos o exemplo da conversão da nossa lista original de encargos médicos de cordas em números inteiros e a remoção de valores em falta:
medical_charges =
Podemos definir uma função que pega numa lista e tenta converter cada elemento em um número inteiro. Quando a conversão não contém erros, voltamos a ser verdadeiros. Quando a conversão lança um erro de valor, utilizamos uma declaração excepto para apanhar o erro e retornamos false:
def convert_and_filter(input_list):
try:
int(input_list)
return True
except ValueError:
return False
Podemos então utilizar os métodos embutidos ‘filter()’ e ‘list()’. A função ‘filter()’cria um iterador e o método ‘list()’ permite-nos criar uma lista de resultados:
charges = list(filter(convert_and_filter, medical_charges))
print(charges)
P>Pararei aqui mas sinto-me à vontade para brincar com os exemplos acima. Por exemplo, pode tentar alterar as condições de filtragem no exemplo de compreensão de lista para incluir apenas taxas inferiores ou iguais a $500.
CONCLUSÕES
Para resumir, neste post discutimos quatro métodos de filtragem de lista em Python. Discutimos a compreensão da lista, que é útil para a sua legibilidade. Discutimos também expressões geradoras que usamos se quisermos evitar gerar grandes resultados a partir de grandes conjuntos de dados. Finalmente, discutimos a utilização dos métodos embutidos ‘filter()’ e ‘list()’, juntamente com uma função personalizada, para filtrar listas. Espero que tenha achado este post útil/interessante. O código deste post está disponível no GitHub. Obrigado por ler!