Las comprensiones de listas (list comprehensions) son una característica poderosa y concisa de Python que permite crear listas de manera eficiente y legible. En lugar de usar bucles tradicionales para construir listas, las comprensiones de listas proporcionan una sintaxis más compacta y expresiva.

Conceptos Clave

  1. Sintaxis Básica: La sintaxis básica de una comprensión de lista es:

    [expression for item in iterable]
    

    Donde expression es la expresión que se evalúa para cada elemento, item es el elemento actual del iterable, e iterable es cualquier objeto que se puede iterar (como una lista, tupla, conjunto, etc.).

  2. Condicionales en Comprensiones de Listas: Puedes agregar una condición opcional para filtrar elementos:

    [expression for item in iterable if condition]
    
  3. Anidación de Comprensiones de Listas: Las comprensiones de listas pueden anidarse para trabajar con estructuras de datos más complejas, como listas de listas.

Ejemplos Prácticos

Ejemplo 1: Crear una Lista de Números al Cuadrado

# Usando un bucle for tradicional
squares = []
for x in range(10):
    squares.append(x**2)

print(squares)  # Salida: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# Usando una comprensión de lista
squares = [x**2 for x in range(10)]
print(squares)  # Salida: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Ejemplo 2: Filtrar Números Pares

# Usando un bucle for tradicional
even_numbers = []
for x in range(10):
    if x % 2 == 0:
        even_numbers.append(x)

print(even_numbers)  # Salida: [0, 2, 4, 6, 8]

# Usando una comprensión de lista
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # Salida: [0, 2, 4, 6, 8]

Ejemplo 3: Convertir una Lista de Cadenas a Mayúsculas

# Usando un bucle for tradicional
words = ["hello", "world", "python"]
uppercase_words = []
for word in words:
    uppercase_words.append(word.upper())

print(uppercase_words)  # Salida: ['HELLO', 'WORLD', 'PYTHON']

# Usando una comprensión de lista
uppercase_words = [word.upper() for word in words]
print(uppercase_words)  # Salida: ['HELLO', 'WORLD', 'PYTHON']

Ejemplo 4: Comprensiones de Listas Anidadas

# Crear una matriz 3x3 usando comprensiones de listas anidadas
matrix = [[j for j in range(3)] for i in range(3)]
print(matrix)  # Salida: [[0, 1, 2], [0, 1, 2], [0, 1, 2]]

Ejercicios Prácticos

Ejercicio 1: Crear una Lista de Números Impares

Instrucciones: Usa una comprensión de lista para crear una lista de números impares del 1 al 20.

# Tu código aquí
odd_numbers = [x for x in range(1, 21) if x % 2 != 0]
print(odd_numbers)  # Salida esperada: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

Ejercicio 2: Filtrar Palabras que Contienen una Letra Específica

Instrucciones: Dada una lista de palabras, usa una comprensión de lista para filtrar aquellas que contienen la letra 'a'.

# Tu código aquí
words = ["apple", "banana", "cherry", "date", "fig", "grape"]
words_with_a = [word for word in words if 'a' in word]
print(words_with_a)  # Salida esperada: ['apple', 'banana', 'grape']

Ejercicio 3: Generar una Lista de Pares Ordenados

Instrucciones: Usa una comprensión de lista anidada para generar una lista de pares ordenados (i, j) donde 0 <= i < 3 y 0 <= j < 3.

# Tu código aquí
pairs = [(i, j) for i in range(3) for j in range(3)]
print(pairs)  # Salida esperada: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

Conclusión

Las comprensiones de listas son una herramienta poderosa en Python que permite crear y manipular listas de manera concisa y eficiente. Al dominar esta técnica, podrás escribir código más limpio y legible. En el siguiente módulo, exploraremos las funciones y cómo pueden ayudarte a estructurar mejor tu código.

Curso de Programación en Python

Módulo 1: Introducción a Python

Módulo 2: Estructuras de Control

Módulo 3: Funciones y Módulos

Módulo 4: Estructuras de Datos

Módulo 5: Programación Orientada a Objetos

Módulo 6: Manejo de Archivos

Módulo 7: Manejo de Errores y Excepciones

Módulo 8: Temas Avanzados

Módulo 9: Pruebas y Depuración

Módulo 10: Desarrollo Web con Python

Módulo 11: Ciencia de Datos con Python

Módulo 12: Proyecto Final

© Copyright 2024. Todos los derechos reservados