Filtrar listas en Python

En este post, vamos a discutir tres métodos para filtrar listas en Python. En concreto, recorreremos cómo utilizar la comprensión de listas, las expresiones del generador y el método incorporado ‘filter()’ para filtrar listas en python.

¡Comencemos!

Supongamos que tenemos datos en una lista y queremos extraer valores o reducir la lista en base a algún criterio. En concreto, consideremos la siguiente lista que contiene una lista sobre cargos médicos con algunos valores perdidos:

medical_charges = 
print(medical_charges)

Para empezar, podemos utilizar la comprensión de la lista para filtrar los valores ‘None’:

medical_charges = 
print(medical_charges)

También podemos convertir los elementos de la lista en enteros con un ligero cambio en la comprensión de la lista:

medical_charges = 
print(medical_charges)

Al convertir cada elemento en un entero, también podemos filtrar en base a la magnitud de cada entero. Supongamos que queremos mantener los cargos mayores o iguales a 500 dólares, podemos escribir la siguiente comprensión de la lista:

medical_charges = 
print(medical_charges)

FILTRACIÓN CON GENERADORES

Si estamos tratando con una cantidad importante de datos, que suele ser el caso de las historias clínicas, podemos filtrar de forma iterativa utilizando una expresión generadora. Si queremos convertir nuestra lista original utilizando una expresión generadora hacemos lo siguiente :

charges = (int(n) for n in medical_charges if n != None)
print(charges)

.

La principal diferencia en la sintaxis de la comprensión de la lista, es el uso de paréntesis en lugar de corchetes. Ahora podemos iterar sobre el generador:

for charge in charges:
print(charge)

FILTRACIÓN UTILIZANDO LOS MÉTODOS ‘LIST()’ Y ‘FILTER()’

Hay ocasiones en las que los criterios de filtrado no pueden expresarse fácilmente mediante la comprensión de listas o expresiones generadoras. Consideremos el ejemplo de convertir nuestra lista original de cargos médicos con valor de cadena en enteros y eliminar los valores que faltan:

medical_charges = 

Podemos definir una función que tome una lista e intente convertir cada elemento en un entero. Cuando la conversión no arroja errores, devolvemos true. Cuando la conversión arroja un error de valor, utilizamos una sentencia except para atrapar el error y devolver false:

def convert_and_filter(input_list):
try:
int(input_list)
return True
except ValueError:
return False

Entonces podemos utilizar los métodos incorporados ‘filter()’ y ‘list()’. La función ‘filter()’crea un iterador y el método ‘list()’ nos permite crear una lista de resultados:

charges = list(filter(convert_and_filter, medical_charges))
print(charges)

Me detendré aquí pero siéntete libre de jugar con los ejemplos anteriores. Por ejemplo, puedes probar a cambiar las condiciones de filtrado en el ejemplo de comprensión de listas para que sólo incluya cargos menores o iguales a 500 dólares.

CONCLUSIONES

Para resumir, en este post hemos hablado de cuatro métodos para filtrar listas en Python. Hablamos de la comprensión de listas que es útil por su legibilidad. También discutimos las expresiones generadoras que usamos si queremos evitar la generación de grandes resultados a partir de grandes conjuntos de datos. Finalmente, discutimos el uso de los métodos incorporados ‘filter()’ y ‘list()’, junto con una función personalizada, para filtrar listas. Espero que hayas encontrado este post útil/interesante. El código de este post está disponible en GitHub. Gracias por leerlo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *