Categorías
Curso Python

Comprensión de Listas en Python

La comprensión de listas (List Comprehension) es una característica poderosa y concisa de Python que permite crear listas de manera más compacta y legible. En lugar de usar bucles for y la función append(), la comprensión de listas permite crear listas de una manera más declarativa.

Introducción a la Comprensión de Listas

La sintaxis básica de la comprensión de listas es la siguiente:

[expression for item in iterable if condition]
  • expression: Una expresión que se evalúa y se añade a la nueva lista.
  • item: Una variable que toma cada valor del iterable.
  • iterable: Una colección o secuencia que se itera.
  • if condition: Una condición opcional para filtrar elementos.

Ejemplo Básico
Empezamos con un ejemplo simple de comprensión de listas:

# Lista original
my_original_list = [0, 1, 2, 3, 4, 5, 6, 7]
print(my_original_list)

# Usando range para crear una lista
my_range = range(20)
print(list(my_range))

# Creando una nueva lista usando list comprehension
my_list = [i + 1 for i in range(8)]
print(my_list)

Explicación:

  1. my_original_list es una lista de números enteros del 0 al 7.
  2. my_range utiliza la función range(20) para generar una secuencia de números del 0 al 19.
  3. my_list se crea usando la comprensión de listas, añadiendo 1 a cada número en el rango de 0 a 7.

Añadiendo Funcionalidad a la Comprensión de Listas

Podemos incluir funciones en nuestras comprensiones de listas para realizar operaciones más complejas:

def sum_five(number):
    return number + 5

# Usando una función dentro de list comprehension
my_list = [sum_five(i) for i in range(10)]
print(my_list)

Explicación:

  1. La función sum_five toma un número y le suma 5.
  2. my_list se crea usando la comprensión de listas, aplicando sum_five a cada número en el rango de 0 a 9.

Filtrando Elementos en Comprensión de Listas

También podemos filtrar elementos usando una condición en la comprensión de listas:

# Crear una lista de números pares usando list comprehension
even_numbers = [i for i in range(20) if i % 2 == 0]
print(even_numbers)

# Crear una lista de números impares usando list comprehension
odd_numbers = [i for i in range(20) if i % 2 != 0]
print(odd_numbers)

Explicación:

  1. even_numbers contiene solo los números pares del 0 al 19.
  2. odd_numbers contiene solo los números impares del 0 al 19.

Comprensión de Listas con Operaciones Anidadas

Podemos anidar comprensiones de listas para trabajar con estructuras más complejas, como listas de listas:

# Crear una lista de listas usando list comprehension anidada
matrix = [[j for j in range(5)] for i in range(3)]
print(matrix)

Explicación:

matrix es una lista de listas, donde cada sublista contiene números del 0 al 4 y hay 3 sublistas en total.

Otras Aplicaciones de Comprensión de Listas

Podemos usar la comprensión de listas para transformar y filtrar datos de manera eficiente:

# Transformar una lista de cadenas a mayúsculas
words = ["python", "is", "awesome"]
uppercase_words = [word.upper() for word in words]
print(uppercase_words)

# Filtrar y transformar datos en una sola expresión
squares_of_even_numbers = [i ** 2 for i in range(10) if i % 2 == 0]
print(squares_of_even_numbers)

Explicación:

uppercase_words convierte cada palabra en la lista words a mayúsculas.

squares_of_even_numbers contiene los cuadrados de los números pares del 0 al 9.

Ejemplo Adicional: Comprensión de Listas con Módulo math

Usando el módulo math, podemos realizar operaciones matemáticas dentro de una comprensión de listas:

import math

# Calcular las raíces cuadradas de una lista de números
numbers = [4, 9, 16, 25, 36]
square_roots = [math.sqrt(number) for number in numbers]
print(square_roots)

# Calcular los logaritmos naturales de una lista de números
logarithms = [math.log(number) for number in range(1, 6)]
print(logarithms)

Explicación:

  1. square_roots contiene las raíces cuadradas de los números en la lista numbers.
  2. logarithms contiene los logaritmos naturales de los números del 1 al 5.

Conclusión
La comprensión de listas es una herramienta poderosa en Python que permite crear listas de manera concisa y eficiente. Con una sintaxis simple, podemos realizar transformaciones, filtrados y operaciones complejas sobre listas. Al combinar comprensiones de listas con funciones y módulos adicionales, podemos extender aún más sus capacidades y escribir código más limpio y legible.