En Python, una de las formas más populares de almacenar datos secuenciales u ordenados es mediante el uso de listas. Una lista en Python es una estructura de datos ordenada, mutable e incorporada que se utiliza para almacenar una colección de datos. Los elementos almacenados en una lista se indexan empezando por cero, y los usuarios pueden cambiar el contenido de una lista después de haberla creado.
El hecho de que los elementos de una lista estén indexados permite almacenar elementos duplicados en una lista. Las listas en Python también pueden contener elementos de distintos tipos de datos. Los elementos de una lista se separan mediante comas y se encierran entre corchetes.
He aquí algunos ejemplos de listas en Python:
# Una lista que contiene un tipo de datos - String
colores = ['Rojo', 'Naranja', 'Amarillo', 'Verde', 'Azul', 'Indigo', 'Violeta']
# Una lista que contiene varios tipos de datos
películas = ['Transformers', 2012, 'Vengadores', 300]
# Una lista con valores duplicados
usuarios = ['Juan', 'María', 'Isabel', 'Juan']
Las listas son una estructura de datos muy versátil, y puede realizar muchas operaciones con los datos almacenados en ellas. Una operación común y útil que se realiza sobre las listas es el filtrado de los datos almacenados en la lista.
Por qué es importante filtrar listas
Filtrar una lista significa extraer subconjuntos específicos de datos que cumplan un criterio determinado. Por ejemplo, puede que sólo nos interesen los números pares de una lista que contiene los números del 1 al 10. Para extraer esos datos de la lista, lo único que tenemos que hacer es filtrarla para obtener los números que sean exactamente divisibles por dos.
El filtrado es especialmente útil en la manipulación y el análisis de datos, ya que permite eliminar elementos no deseados de las listas, crear nuevas listas que contengan elementos que cumplan unos criterios determinados y extraer datos que cumplan ciertas condiciones.
Algunas aplicaciones reales del filtrado de listas son:
- Validación de datos – Al trabajar con una lista, es posible que desee trabajar únicamente con datos que cumplan un criterio determinado. Por ejemplo, en una lista de usuarios, es posible que le interesen los usuarios con nombre y apellidos. El filtrado puede permitirle verificar y validar los datos de la lista antes de procesarlos. De este modo, evitará trabajar con datos que no cumplan sus requisitos.
- Limpieza de datos – Dado que las listas pueden almacenar una gran variedad de tipos de datos, no es raro encontrar que las listas contienen datos no deseados que no le interesan. Por ejemplo, en una lista que contiene nombres, puede que no le interesen los valores numéricos de la lista. Mediante el filtrado, puede eliminar los datos no deseados.
- Análisis de datos – El filtrado de datos es especialmente útil en el análisis de datos, ya que le permite centrarse en subconjuntos específicos de datos, lo que le permite identificar fácilmente patrones y tendencias. Por ejemplo, en una lista de alumnos, puede filtrar los alumnos de sexo masculino y femenino y utilizar el resultado en el análisis de datos. Incluso puede filtrar en función de la edad, la ubicación y el curso. Esto le permite extraer conclusiones más útiles a partir de subconjuntos específicos de datos en una lista
El filtrado de listas es una función muy útil, ya que le da el control sobre los datos almacenados en una lista permitiéndole trabajar sólo con los datos que le interesan.
Dirigirse a subconjuntos específicos de datos almacenados en una lista es muy útil ya que agiliza el procesamiento y el análisis de datos haciendo que los procesos sean mejores, más rápidos y más precisos.
Uso de la función filter()
La función filter( ) es una función incorporada en Python que se puede utilizar para iterar a través de un iterable como una lista, tuplas, conjunto o diccionario y extraer elementos en el iterable que satisfagan una condición dada.
Un iterable en Python es un objeto que se puede recorrer en bucle a través de sus elementos uno a uno. Iterar a través de un iterable devuelve los elementos del iterable de uno en uno.
La sintaxis de la función filtro es la siguiente:
filter(función, iterable)
function – una función Python que contiene la condición de filtrado
iterable – el iterable que se va a filtrar. En este caso, utilizaremos una lista.
La función filter( ) toma la función pasada y la aplica a cada elemento del iterable pasado, probando la condición de filtrado contra el elemento. Si el elemento satisface la condición, es decir, devuelve el booleano true, será seleccionado por la función filter( ) . En caso de que no satisfaga la condición, el elemento no será seleccionado.
La función filter () devuelve un iterable con los elementos que han superado la condición de filtrado. Puede crear una nueva lista que contenga los elementos que pasaron la condición de filtrado utilizando la función list ().
Para ver la función filter () en acción, considere la siguiente lista, que se está filtrando para seleccionar los números que son menores de 50:
#Una lista de números
números = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]
#Función que contiene la condición de filtrado
def es_par(num):
si num < 50
return True
si no
return False
# la función list() se utiliza para crear una lista a partir del iterable
# devuelto por la función filter()
números_filtrados = list(filter(es_par, números))
print(números_filtrados)
El código anterior imprime el siguiente resultado
[15, 46, 24, 37]
Uso de un bucle for
En Python, un bucle for es una sentencia de flujo de control utilizada para iterar sobre estructuras de datos secuenciales como una lista, tuplas, cadenas,/ y matrices. Un bucle for ejecuta repetidamente un bloque de código para cada elemento de una secuencia.
La sintaxis general de un bucle for es la siguiente
for item in iterable:
# Bloque de código a ejecutar para cada ítem en el iterabele
item – una variable que representa el elemento actual que se está procesando en una iteración del bucle
iterable – la secuencia sobre la que itera el bucle for. En este caso, una lista
Para filtrar una lista utilizando un bucle for, tendremos que pasar nuestra condición de filtrado en la sección correspondiente al bloque de código que se va a ejecutar. De esta forma, cada elemento será evaluado para ver si satisface una condición determinada.
Cuando utilice un bucle for para filtrar una lista, también necesitará crear una lista vacía en la que añadirá los valores que pasen su condición de filtrado.
Para ver esto en acción, vamos a filtrar una lista de números para obtener los números menores de 50 utilizando un bucle for:
números = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]
números_filtrados = []
para num en números
if num < 50:
# append() se usa para añadir un número que pasa la condición
# en números_filtrados.
filtered_numbers.append(num)
print(números_filtrados)
El código anterior imprime el siguiente resultado:
[15, 46, 24, 37]
Utilizar otra lista
Puede filtrar una lista utilizando otra comprobando si un elemento de la lista que desea filtrar aparece en otra lista. Por ejemplo, considere las dos listas siguientes
letras = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vocales = ['a', 'e', 'i', 'o', 'u']
En la lista llamada letras anterior, podemos determinar qué elementos de la lista no son vocales comprobando si el elemento aparece o no en la lista de vocales . Si un elemento no aparece en la lista de vocales, entonces no es una vocal.
De esta forma, podemos obtener todos los caracteres de las letras que no son vocales. Para ello, ejecute el siguiente código
letras = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vocales = ['a', 'e', 'i', 'o', 'u']
no_vocal = []
para letra en letras
si letra no en vocales
not_vowel.append(letra)
print(no_vocal)
El código anterior imprime la siguiente salida, que contiene caracteres en letras que no son vocales.
['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']
Uso de la comprensión de listas
En Python, la comprensión de listas ofrece una sintaxis más corta, concisa y limpia para crear una nueva lista a partir de una lista existente. La comprensión de listas tiene la capacidad de reducir a una sola línea las múltiples líneas de código utilizadas para crear una nueva lista a partir de otra lista utilizando un bucle for.
Esto se debe a que cuando se utiliza la comprensión de listas, se definen y añaden elementos a la nueva lista todo en una sola línea.
La sintaxis para la comprensión de listas es la siguiente:
lista_nueva = [expresión para elemento en iterable si condición]
nueva_lista – una nueva lista que contiene los elementos añadidos por la comprensión de lista
expresión– una operación que se aplicará a cada elemento del iterable
elemento – nombre de la variable que representa el elemento actualmente activo en el iterable
iterable – un iterable del que se seleccionarán los elementos.
condición if – una parte opcional en la que se puede añadir una condición para filtrar los elementos y añadir sólo aquellos que satisfagan una condición determinada a la nueva lista que se está creando.
Para ver la comprensión de listas en acción y lo mucho que puede simplificar el proceso de filtrado y creación de una nueva lista, utilizaremos la lista de letras y vocales para filtrar los elementos de la lista de letras que no estén en la lista de vocales. Para ello, ejecute el siguiente código
letras = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vocales = ['a', 'e', 'i', 'o', 'u']
# comprensión de la lista
no_vocal = [letra para letra en letras si letra no en vocales]
print(no_vocal)
La salida del código anterior se muestra a continuación:
['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']
El resultado es similar al del ejemplo anterior, que utilizaba un bucle for para filtrar una lista utilizando otra lista. Sin embargo, utiliza menos líneas de código para lograr el mismo resultado.
Conclusión
Cuando se trabaja con datos en Python, una operación común que está obligado a realizar es filtrar los datos de un iterable como una lista. Este es un paso muy útil en el análisis y procesamiento de datos, ya que le permite trabajar sólo con los datos que son relevantes para la operación o procesamiento que se está realizando.
Una estructura de datos secuencial muy popular en Python es la lista. Si se encuentra trabajando con una lista y necesita filtrarla, considere la posibilidad de utilizar cualquiera de los métodos destacados en el artículo.
También puede leer cómo utilizar funciones lambda en Py thon con ejemplos.