ComenzarEmpieza gratis

Creación de un generador

En los ejercicios anteriores, te has ocupado principalmente de escribir expresiones de generador, que utilizan la sintaxis de la comprensión. Poder utilizar la sintaxis de la comprensión para las expresiones de generador te ha facilitado mucho el trabajo.

Ahora, recuerda del vídeo que no solo hay expresiones de generador, sino también funciones de generador. Las funciones de generador son funciones que, igual que las expresiones de generador, producen una serie de valores en lugar de devolver un único valor. Una función de generador se define como una función normal, pero, cuando genera un valor, utiliza la palabra clave yield en lugar de return.

En este ejercicio, crearás una función de generador con un mecanismo similar al de la expresión de generador que definiste en el ejercicio anterior:

lengths = (len(person) for person in lannister)

Este ejercicio forma parte del curso

Caja de herramientas Python

Ver curso

Instrucciones del ejercicio

  • Completa el encabezado de función de la función get_lengths(), que tiene un único parámetro, input_list.
  • En el bucle for de la definición de función, aplica yield a la longitud de las cadenas en input_list.
  • Completa la parte iterable del bucle for para imprimir los valores generados por la función de generador get_lengths(). Proporciona la llamada a get_lengths(), pasando la lista lannister.

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

# Create a list of strings
lannister = ['cersei', 'jaime', 'tywin', 'tyrion', 'joffrey']

# Define generator function get_lengths
def ____:
    """Generator function that yields the
    length of the strings in input_list."""

    # Yield the length of a string
    for person in input_list:
        ____

# Print the values generated by get_lengths()
for value in ____:
    print(value)
Editar y ejecutar código