Cómo filtrar la lista en Python de la manera correcta para obtener más de sus datos

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 integrada que se utiliza para almacenar una colección de datos. Los elementos almacenados en una lista se indexan a partir de 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 el almacenamiento de elementos duplicados en una lista. Las listas en Python también pueden contener elementos de diferentes tipos de datos. Los elementos de una lista se separan con comas y se encierran entre corchetes.

Aquí hay ejemplos de listas en Python:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Las listas son una estructura de datos muy versátil y puede realizar muchas operaciones en los datos almacenados en las listas. Una operación común y útil que se realiza en las listas es filtrar los datos almacenados en la lista.

Por qué es importante filtrar listas

Filtrar una lista significa extraer subconjuntos específicos de datos que cumplen con un criterio dado. Por ejemplo, es posible que solo nos interesen los números pares en una lista que contiene los números del 1 al 10. Para extraer dichos datos de la lista, todo lo que debemos hacer es filtrar la lista para obtener 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 determinados criterios y extraer datos que cumplan ciertas condiciones.

Algunas aplicaciones del mundo real de las listas de filtrado incluyen:

  • Validación de datos: al trabajar con una lista, es posible que desee trabajar solo con datos que cumplan con un criterio determinado. Por ejemplo, en una lista de usuarios, es posible que le interesen los usuarios con nombre y apellido. El filtrado puede permitirle verificar y validar los datos de la lista antes de procesarlos. De esta manera, evita trabajar con datos que no cumplen con sus requisitos.
  • Limpieza de datos: dado que las listas pueden almacenar una 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, es posible que no le interesen los valores numéricos en la lista. A través del filtrado, puede eliminar los datos no deseados.
  • Análisis de datos: el filtrado de datos es particularmente útil en el análisis de datos, ya que le permite concentrarse en subconjuntos específicos de datos, lo que le permite identificar fácilmente patrones y tendencias. Por ejemplo, en una lista de estudiantes, puede filtrar estudiantes masculinos y femeninos y usar el resultado en el análisis de datos. Incluso puede filtrar según la edad, la ubicación y el grado. Esto le permite sacar conclusiones más útiles de subconjuntos específicos de datos en una lista

Filtrar listas es una función muy útil, ya que le brinda control sobre los datos almacenados en una lista, lo que le permite trabajar solo 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, lo que hace que los procesos sean mejores, más rápidos y más precisos.

Usando la función de filtro ()

La función filter() es una función integrada de Python que se puede usar para iterar a través de un iterable como una lista, tuplas, conjunto o diccionario y extraer elementos en el iterable que satisfacen una condición dada.

Un iterable en Python es un objeto que puede recorrer sus elementos uno por uno. Iterar a través de un iterable devuelve los elementos en el iterable uno a la vez.

La sintaxis de la función de filtro es la siguiente:

filter(function, iterable)

función: una función de Python que contiene la condición de filtrado

iterable: el iterable que se va a filtrar. En este caso, usaremos una lista.

La función filter() toma la función pasada y la aplica a cada elemento en el iterable pasado, probando la condición de filtrado contra el elemento. Si el elemento cumple la condición, es decir, devuelve el valor booleano verdadero, que será seleccionado por la función filter(). En caso de que no cumpla la condición, el ítem no es seleccionado.

La función filter() devuelve un iterable con elementos que pasaron la condición de filtrado. Puede crear una nueva lista que contenga elementos que pasaron la condición de filtrado utilizando la función list().

Para ver la función filter() en acción, considere la lista a continuación, que se está filtrando para seleccionar números menores de 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

El código anterior imprime el siguiente resultado:

[15, 46, 24, 37]

Usando un bucle for

En Python, un bucle for es una declaración de flujo de control que se usa 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 para un bucle for es la siguiente:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

elemento: 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 usando un bucle for, necesitaremos pasar nuestra condición de filtrado en la sección para que se ejecute el bloque de código. De esta forma, cada elemento será evaluado para ver si cumple con una determinada condición.

Al usar un bucle for para filtrar una lista, también debe crear una lista vacía donde agregará valores que superen su condición de filtrado.

Para ver esto en acción, filtremos una lista de números para obtener números menores de 50 usando un bucle for:

numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

El código anterior imprime el siguiente resultado:

[15, 46, 24, 37]

Usando otra lista

Puede filtrar una lista utilizando otra comprobando si un elemento de una lista que desea filtrar aparece en otra lista. Por ejemplo, considere las siguientes dos listas

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

vowels = ['a', 'e', 'i', 'o', 'u']

En la lista anterior llamada letras, podemos determinar qué elementos de la lista no son vocales comprobando si el elemento aparece en la lista de vocales o no. Si un elemento no aparece en la lista de vocales, entonces no es una vocal.

De esta manera, podemos obtener todos los caracteres en letras que no sean vocales. Para ello, ejecute el siguiente código:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

El código anterior imprime el siguiente resultado, 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, más concisa y más limpia para crear una nueva lista a partir de una lista existente. La comprensión de listas tiene la capacidad de reducir las múltiples líneas de código utilizadas para crear una nueva lista a partir de otra lista mediante un bucle for en una sola línea.

Esto se debe a que cuando usa la comprensión de listas, define y agrega elementos a la nueva lista en una sola línea.

La sintaxis para la comprensión de listas es la siguiente:

new_list = [expression for element in iterable if condition]

new_list: una nueva lista que contiene elementos agregados por la lista de comprensión

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 desde el cual se seleccionarán los elementos.

if condition: una parte opcional donde se puede agregar una condición para filtrar elementos para agregar solo aquellos que satisfacen una condición determinada en la nueva lista que se está creando.

Para ver la comprensión de listas en acción y cuánto puede simplificar el proceso de filtrado y creación de una nueva lista, usaremos 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:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

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 ejemplo anterior, que usó un bucle for para filtrar una lista usando otra lista. Sin embargo, utiliza menos líneas de código para lograr el mismo resultado.

Conclusión

Cuando trabaja con datos en Python, una operación común que debe realizar es filtrar 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 solo con datos que son relevantes para la operación o el procesamiento que se está realizando.

Una estructura de datos secuenciales muy popular en Python es la lista. En el caso de que te encuentres trabajando con una lista y necesites filtrarla, considera usar cualquiera de los métodos destacados en el artículo.

También puede leer sobre cómo usar funciones lambda en Python con ejemplos.