Iteratory są fundamentalnym konceptem w Pythonie, umożliwiającym efektywne przetwarzanie sekwencji danych.
Zobaczmy zatem, jakie są kluczowe aspekty iteratorów w Pythonie.
Czym są iteratory?
Iteratory to obiekty, które implementują metody __iter__() i __next__(). Pozwalają one na sekwencyjne przeglądanie elementów kolekcji, jeden po drugim, bez konieczności ładowania całej kolekcji do pamięci.
Podstawowe cechy
- Jednorazowe użycie: Iteratory można przejść tylko raz. Po wyczerpaniu elementów, iterator nie resetuje się automatycznie.
- Oszczędność pamięci: Idealne do pracy z dużymi zbiorami danych, gdyż nie wymagają załadowania całej sekwencji do pamięci.
- Leniwa ewaluacja: Elementy są generowane na żądanie, co może poprawić wydajność.
Przykład implementacji
class MyIterator:
def __init__(self, max):
self.max = max
self.n = 0
def __iter__(self):
return self
def __next__(self):
if self.n < self.max:
result = 2 ** self.n
self.n += 1
return result
else:
raise StopIteration
# Użycie
for i in MyIterator(5):
print(i)
# Wynik: 1, 2, 4, 8, 16
Wbudowane funkcje i iteratory
Python oferuje wiele wbudowanych funkcji, które zwracają iteratory, np.:
range(): Generuje sekwencję liczb.enumerate(): Dodaje licznik do iterowalnego obiektu.zip(): Łączy elementy z wielu iteratorów.
Korzyści z używania iteratorów
- Umożliwiają przetwarzanie dużych zbiorów danych w sposób wydajny pamięciowo.
- Pozwalają na tworzenie nieskończonych sekwencji.
- Są podstawą dla generatorów, które jeszcze bardziej upraszczają tworzenie iteratorów.
Iteratory są potężnym narzędziem w Pythonie, szczególnie przydatnym w przetwarzaniu danych i programowaniu funkcyjnym.