Menu
Coddy logo textTech

Wyrażenia generatorowe

Lekcja 9 z 13 w kursie Iteratory w Pythonie w Coddy.

Wyrażenia generatorowe to zwięzły sposób tworzenia iteratorów w Pythonie. Stanowią bardziej oszczędną pamięciowo alternatywę dla składni listowej, szczególnie w przypadku dużych zbiorów danych lub nieskończonych sekwencji.

Składnia wyrażeń generatorowych

Wyrażenia generatorowe mają składnię podobną do składni listowej, ale używają nawiasów okrągłych zamiast kwadratowych:

(expression for item in iterable if condition)

Najważniejsze cechy

  • Leniwa ewaluacja: wyrażenia generatorowe zwracają elementy pojedynczo i tylko na żądanie, oszczędzając pamięć.
  • Iteratory jednorazowego użytku: po wyczerpaniu nie można ich ponownie użyć bez ponownego utworzenia generatora.
  • Zwięzła składnia: pozwalają w kompaktowy sposób definiować proste funkcje generatorowe.

Przykład użycia

Oto prosty przykład wyrażenia generatorowego, które zwraca kwadraty liczb:

squares = (x**2 for x in range(5))
for square in squares:
    print(square)  # Wypisuje: 0, 1, 4, 9, 16

Porównanie ze składnią listową

Choć ich składnia jest podobna, wyrażenia generatorowe różnią się od składni listowej pod względem zużycia pamięci:

# Wyrażenie listowe (tworzy całą listę w pamięci)
squares_list = [x**2 for x in range(1000000)]

# Wyrażenie generatorowe (tworzy obiekt generatora)
squares_gen = (x**2 for x in range(1000000))

Wyrażenie generatorowe jest bardziej oszczędne pamięciowo, ponieważ nie tworzy wszystkich wartości jednocześnie.

Zastosowania

Wyrażenia generatorowe są szczególnie przydatne podczas:

  • Pracy z dużymi zbiorami danych
  • Przetwarzania strumieni danych
  • Tworzenia potoków przetwarzania danych

Korzystając z wyrażeń generatorowych, możesz tworzyć wydajne i przyjazne dla pamięci iteratory do różnych zadań przetwarzania danych w Pythonie.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

challenge icon

Wyzwanie

Łatwy

Utwórz wyrażenie generatorowe, które filtruje i przekształca sekwencję liczb. Generator powinien zwracać kwadraty liczb parzystych z podanego zakresu.

Otrzymujesz:

  • Dwie liczby całkowite na wejściu: start i end (włącznie)

Twoje zadanie:

  1. Utwórz wyrażenie generatorowe, które:
    • Iteruje po zakresie od start do end (włącznie)
    • Odfiltrowuje liczby nieparzyste
    • Podnosi pozostałe liczby parzyste do kwadratu
  2. Użyj wyrażenia generatorowego w pętli, aby wypisać każdą otrzymaną wartość w nowym wierszu

Dane wejściowe zostaną podane jako dwie liczby całkowite rozdzielone spacją, reprezentujące start i end.

Spróbuj swoich sił

# Wczytaj dane wejściowe
start, end = map(int, input().split())

# TODO: Utwórz tutaj wyrażenie generatorowe
generator_exp = None  # Zastąp None wyrażeniem generatorowym

# Wypisz wyniki
for value in generator_exp:
    print(value)

Wszystkie lekcje w sekcji Iteratory w Pythonie

Poćwicz samodzielnie: Kompilator Python online