Zacznij terazZacznij za darmo

Tworzenie generatora

W poprzednich ćwiczeniach pracowałeś głównie z wyrażeniami generatorowymi, które korzystają ze składni comprehension. Dzięki temu tworzenie generatorów było znacznie prostsze!

Przypomnij sobie z wideo, że oprócz wyrażeń generatorowych istnieją również funkcje generatorowe. Funkcje generatorowe to funkcje, które – podobnie jak wyrażenia generatorowe – zwracają serię wartości zamiast jednej wartości. Definiuje się je tak samo jak zwykłe funkcje, z tą różnicą, że zamiast słowa kluczowego return używają słowa kluczowego yield.

W tym ćwiczeniu stworzysz funkcję generatorową działającą na podobnej zasadzie co wyrażenie generatorowe zdefiniowane w poprzednim ćwiczeniu:

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

To ćwiczenie jest częścią kursu

Zestaw narzędzi Pythona

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij nagłówek funkcji get_lengths(), która przyjmuje jeden parametr: input_list.
  • W pętli for wewnątrz definicji funkcji użyj yield, aby zwrócić długość kolejnych łańcuchów znaków z input_list.
  • Uzupełnij część iterowalną pętli for wypisującej wartości generowane przez funkcję generatorową get_lengths(). Wywołaj get_lengths(), przekazując jej listę lannister.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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)
Edytuj i uruchom kod