Comprensión de listas
📘 ¿Qué es una comprensión de listas?
Una comprensión de listas es una forma concisa, legible y eficiente de crear listas a partir de cualquier iterable (como otra lista, un range()
, un string, etc.).
🧱 Sintaxis básica:
[expresión for elemento in iterable]
✅ Ejemplo básico:
# Crear una lista con los números del 0 al 4
numeros = [x for x in range(5)]
print(numeros) # [0, 1, 2, 3, 4]
✅ Ejemplo con operación matemática:
# Cuadrados de los números del 0 al 4
cuadrados = [x**2 for x in range(5)]
print(cuadrados) # [0, 1, 4, 9, 16]
📌 Comprensiones con condición (filtro)
Puedes añadir una condición para incluir solo ciertos elementos:
🧱 Sintaxis:
[expresión for elemento in iterable if condición]
✅ Ejemplo:
# Números pares del 0 al 9
pares = [x for x in range(10) if x % 2 == 0]
print(pares) # [0, 2, 4, 6, 8]
📌 Comprensiones con if–else (condicional ternario)
Si necesitas aplicar una expresión diferente dependiendo de una condición, se usa if…else
dentro de la expresión:
🧱 Sintaxis:
[expresión_if if condición else expresión_else for elemento in iterable]
✅ Ejemplo:
# Etiquetar números como "par" o "impar"
etiquetas = ["par" if x % 2 == 0 else "impar" for x in range(5)]
print(etiquetas) # ['par', 'impar', 'par', 'impar', 'par']
🧵 Comprensión de listas anidadas (dobles bucles)
También puedes usar bucles anidados dentro de una comprensión.
✅ Ejemplo: producto cartesiano
combinaciones = [(x, y) for x in [1, 2] for y in ['a', 'b']]
print(combinaciones)
# [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
🎯 Ejemplos prácticos útiles
✅ Convertir string a lista de caracteres:
texto = "hola"
chars =
print(chars) # ['h', 'o', 'l', 'a']
✅ Extraer dígitos de una cadena:
cadena = "abc123def45"
digitos =
print(digitos) # ['1', '2', '3', '4', '5']
✅ Elevar al cuadrado solo si el número es positivo:
nums = [-3, -2, 0, 2, 3]
positivos_cuadrado = [x**2 for x in nums if x > 0]
print(positivos_cuadrado) # [4, 9]
✅ Convertir palabras a mayúsculas:
palabras = ["python", "es", "genial"]
mayusculas = [palabra.upper() for palabra in palabras]
print(mayusculas) # ['PYTHON', 'ES', 'GENIAL']
✅ Reemplazar espacios por guiones:
frase = "esto es una prueba"
nueva = ['-' if c == ' ' else c for c in frase]
print("".join(nueva)) # esto-es-una-prueba
🧪 Ejercicios propuestos (resuélvelos tú)
🧩 Nivel fácil
- Crea una lista con los cuadrados de los números del 1 al 10.
- Obtén una lista con los números del 0 al 20 que sean múltiplos de 3.
- Dada la lista
["Ana", "Luis", "Pedro"]
, obtén una lista con sus longitudes.
🔧 Nivel intermedio
- De la lista
[3, -1, -7, 5, 0]
, crea una lista con los valores absolutos. - Crea una lista con los primeros 10 números pares elevados al cubo.
- Convierte la lista
["123", "456", "789"]
en[123, 456, 789]
.
🔬 Nivel avanzado
- Dado el texto
"Python es divertido"
, crea una lista con solo las vocales en minúscula. - Crea una lista de todas las combinaciones posibles de letras entre
"abc"
y"123"
. - Transforma una matriz de 2D a 1D:
matriz = [[1, 2], [3, 4], [5, 6]]
# resultado: [1, 2, 3, 4, 5, 6]