Co to są iteratory i jak utworzyć własny iterator w Pythonie?

Iteratory to fundamentalny koncept w Pythonie, umożliwiający przechodzenie przez elementy kolekcji (takich jak listy czy słowniki) w sposób sekwencyjny. Są one niezwykle przydatne, gdy potrzebujemy przetwarzać każdy element zbioru danych, niezależnie od jego rozmiaru. Python, jako język wysoce zorientowany na pracę z danymi, oferuje proste i wygodne sposoby na tworzenie i używanie iteratorów.

Przykład kodu: Tworzenie własnego iteratora

Aby lepiej zrozumieć, jak działają iteratory, stwórzmy prosty iterator, który przechodzi przez liczby od 1 do określonego limitu.

class CountTo:
    # Inicjalizacja iteratora z maksymalną wartością
    def __init__(self, max):
        self.max = max

    # Metoda __iter__ inicjująca iterator
    def __iter__(self):
        self.num = 1
        return self

    # Metoda __next__ definiująca kolejny element sekwencji
    def __next__(self):
        if self.num <= self.max:
            result = self.num
            self.num += 1
            return result
        else:
            # Zakończenie iteracji po osiągnięciu maksimum
            raise StopIteration

# Użycie własnego iteratora
my_counter = CountTo(3)
for num in my_counter:
    print(num)  # Wypisze kolejno liczby 1, 2, 3

Jak to działa?

  • Inicjalizacja: Klasa CountTo inicjuje się z maksymalną wartością, do której będzie liczyć. Przechowuje tę wartość i przygotowuje się do iteracji.
  • Iteracja: Metoda __iter__ przygotowuje iterator do pracy, ustawiając początkowy numer na 1. Metoda __next__ jest sercem iteratora, określając, co zostanie zwrócone przy kolejnym wywołaniu iteratora i inkrementując wartość, aby przechodzić do następnego elementu.
  • Zakończenie iteracji: Gdy osiągniemy maksymalną wartość, iterator zgłasza wyjątek StopIteration, informując Pythona, że wszystkie elementy zostały już przetworzone.

Podsumowanie

Iteratory w Pythonie są potężnym narzędziem do pracy z danymi kolekcji. Dzięki nim możemy elegancko przechodzić przez elementy, zachowując klarowność kodu i kontrolę nad procesem iteracji. Tworzenie własnych iteratorów otwiera przed programistami drzwi do bardziej zaawansowanych technik przetwarzania danych, umożliwiając tworzenie kodu, który jest zarówno wydajny, jak i łatwy do zrozumienia.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs Python od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top