PyQuiz 23 - List comprehension en Python | Quiz interactivo

PyQuiz 23 – List comprehension en Python

El reto

nums = [x**2 for x in range(5)]
print(nums)

¿Cuál es el resultado?

  • a) [0, 1, 4, 9, 16]
  • b) [1, 4, 9, 16, 25]
  • c) [0, 1, 4, 9]

Piensa tu respuesta antes de seguir leyendo…


Concepto: List comprehension

Las list comprehensions (comprensiones de lista) son una sintaxis compacta para crear listas a partir de un iterable, aplicando opcionalmente una transformación y/o un filtro. La estructura básica es: [expresión for variable in iterable].

Son equivalentes a un bucle for que construye una lista con append(), pero en una sola línea y de forma más eficiente. Python evalúa la expresión para cada valor del iterable y añade el resultado a la nueva lista.

En [x**2 for x in range(5)], range(5) genera los valores 0, 1, 2, 3, 4. Para cada uno se calcula x**2 (el cuadrado). El resultado es una lista con los cuadrados: [0, 1, 4, 9, 16].

Paso a paso

  1. range(5) — genera los valores 0, 1, 2, 3, 4 (cinco valores, empezando en 0).
  2. Para x = 0: 0**2 = 0. Para x = 1: 1**2 = 1. Para x = 2: 2**2 = 4.
  3. Para x = 3: 3**2 = 9. Para x = 4: 4**2 = 16.
  4. nums = [x**2 for x in range(5)] — la lista resultante es [0, 1, 4, 9, 16].
  5. print(nums) — se imprime [0, 1, 4, 9, 16].

Solución

Respuesta correcta: A) [0, 1, 4, 9, 16]

range(5) = 0,1,2,3,4. Elevados al cuadrado: [0, 1, 4, 9, 16].

Sabías que…

Las list comprehensions admiten un filtro opcional con if, y también se pueden anidar para iterar sobre múltiples dimensiones:

# Con filtro: solo cuadrados de números pares
nums = [x**2 for x in range(10) if x % 2 == 0]
print(nums)  # [0, 4, 16, 36, 64]

# Transformación de cadenas
palabras = ['python', 'es', 'genial']
mayus = [p.upper() for p in palabras]
print(mayus)  # ['PYTHON', 'ES', 'GENIAL']

# Anidada: tabla de multiplicar 2x2
tabla = [(i, j) for i in range(1, 4) for j in range(1, 4)]
print(tabla[:3])  # [(1, 1), (1, 2), (1, 3)]

# dict comprehension
cuadrados = {x: x**2 for x in range(5)}
print(cuadrados)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Prueba tú mismo

Escribe una list comprehension que devuelva los cubos (x**3) de los números impares del 1 al 10.


Más PyQuizzes en elpythonista.com/pyquizzes

Tutorial relacionado: Listas en Python

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicar un comentario