Iteracja (ang. iteration) to proces w którym polecenia/instrukcje wykonywane są na elementach wybranej kolekcji typu stringi, listy, zestawy, słowniki, krotki.
Iterujemy wewnątrz pętli typu for lub while.
Iterowalny (ang. iterable) – to wszystko po czym można iterować/przechodzić.
Iterable posiada metodę zwracającą tzw. iterator. Ta metoda to `__iter__()`.
Listy, krotki, zestawy, słowniki i łańcuchy Pythona są iterowalne, ponieważ możesz iterować po ich elementach i uzyskiwać do nich dostęp — jeden po drugim.
Iterator (ang. iterator) to obiekt, który przeprowadza itetrację na obiektach iterowalnych i wie na którym elemencie w iterowalnym obiekcie aktualnie jesteśmy.
Tłumacząc prościej, iterator jest to nic innego jak obiekt pozwalający na sekwencyjny dostęp do kolejnych elementów zawartych w wybranych obiektach np. listach, zestawach, krotkach, słwonikach, ciągach.
Python udostępnia bardzo prosty sposób tworzenia iteratorów. Wystarczy, że
w klasie zdefiniujemy dwie metody:
__iter__() oraz
__ next__().
Są to specjalne metody zwane łącznie protokołem iteratora
metoda iter() zwraca obiekt naszego iteratora.
metoda next() zwraca nastepny element sekwencji. Po zakończeniu elementów zwraca wyjątek "stopiteration":
Przykład:
x=[1,2,3,4]
y=iter(x)
print(y)
<list_iterator object at 0x000001F2B8DDBFD0>
next(y)
1 #wynik
next(y)
2 #wynik
next(y)
3 #wynik
next(y)
4 #wynik
next(y)
StopIteration #wynik
Generator to funkcja, która zwraca iterator i ogólnie polega na tym że funkcja ta może zostać zatrzymana a następnie wznowiona od miejsca, w którym została wstrzymana.
Na podstawie zapamiętanego stanu możliwe jest zwracanie różnych wartości (iteratorów) podczas kolejnych wstrzymań funkcji.
Iteracja w łańcuchach Pythona
Iterowalny jest
łańcuch (ciąg) w pętli for:
Przykład:
for i in "bananik":
print(i)
wynik:
b
a
n
a
n
i
k
Iteracja w listach Pythona
Iteracja w listach Pythona przebiega po elementach listy, jeden po drugim, w takim porządku, w jakim są one umieszczone.
W Pythonie jest kilka sposobów iteracji w listach:
1. Użycie pętli 'for'
2. Użycie pętli 'for' i metody range()
3. Użycie pętli 'while'
4. Użycie comprehension (chyba najbardziej konkretny sposób)
5. Użycie pętli for i funkcji enumerate()
Iteracja w słownikach w PYTHONIE
Iterowalny jest
słownik (dict) w Pythonie.
Istnieje wiele sposobów iteracji słownika w Pythonie.
1) Dostęp do klucza za pomocą metody keys()
2) Dostęp do słownika bez użycia metod wbudowanych w Pythona
3) Iteruj przez wszystkie wartości za pomocą metody values()
4) Iteruj przez wszystkie pary kluczy i wartości, używając metody items()
5) Uzyskaj dostęp zarówno do klucza, jak i wartości bez użycia metody items()