iteracja iterować

i

Co to znaczy iterować? Czym jest iteracja?

Tak, jak się tego używa na co dzień i jak możesz sobie zapamiętać: iterować to po prostu: przechodzić po wszystkich elementach po kolei. Analogicznie iteracja to rzeczownik utworzony z tego zjawiska, czyli: przechodzenie przez wszystkie elementy po kolei. Iterowalny to taki, na którym można zrobić iterację. A mówiąc po ludzku: taki, który zawiera elementy, po których można przejść po kolei. W Pythonie mamy typy iterowalne i nie-iterowalne, ale nie uprzedzajmy faktów (; .

Iteracja najczęściej jest używana w pętlach. Jest to oczywiście spolszczenie od angielskiego „to iterate”, które wg. Google translatora znaczy iterować / powtarzać. Nie jest to całkiem bez sensu, bo po to właśnie iterujemy po wszystkich elementach, żeby powtórzyć na każdym jakąś czynność.

Jak iteruje Python

W Pythonie iteracja odbywa się po największym składowym elemencie typu obiektu (czyli tego, po czym iteruejmy).

Rozważymy jako przykład obiekt: kot. Przyjmujemy, że jest to obiekt możliwy do iterowania w Pythonie. Jego największym elementem składowym są części ciała: głowa, tułów,  łapy i ogon. Ta systematyka podziału kota może nie jest fachowa, ale umawiamy się, że jest prawdziwa.

Kot jest iterowalny, więc możesz przejść po wszystkich elementach kota i na każdym wykonać głaskanie. Weźmiesz pod uwagę kolejno: głowę, tułów, łapę pierwszą, łapę drugą, łapę trzecią, łapę czwartą i ogon kota i po tym zakończysz głaskanie. Zauważ, że w obiekcie kot elementy składowe mają zawsze tą samą kolejność (przynajmniej bazowo). Dlatego Ty też wykonując pętlę jakiegoś działania na tych elementach zachowasz tę kolejność. Nie pominiesz też żadnego elementu kota, bo przechodzi się po wszystkich elementach. (Systematyka głaskania kota po łapach również może nie być fachowa, ale umawiamy się na potrzeby tego postu, że łapy kota również są iterowalne do głaskania.)

Jeżeli jednak na kolanach siedzą Ci 3 koty i chcesz po nich przeiterować, to w zbiorze kotów największym elementem składowym jest cały kot, a nie jego części. Głaszczesz więc: pierwszego kota, drugiego kota i  trzeciego kota i wychodzisz z pętli. Cóż, Python nie jest doskonały do obsługi kotów!

Analogicznie – iteracja na wartościach tekstowych i listach wartości tekstowych:

  • Jeżeli przeiterujemy przez słowo np. „rozbisurmaniony” (jest w o ogóle takie słowo?!) to przejdziemy po każdej po kolei literce: r, o, z i tak dalej, aż do y.
  • Jednak jeżeli to będzie lista słów np. [ „robisurmaniony”, „czupurny” ] to jej największym elementem składowym nie będą już litery, a pełne słowa. Przechodzenie kolejno odbędzie się więc po słowach: „rozbisurmaniony”, „czupurny”.
  • Jeżeli w liście słów znajdą się dwie osobne listy słów [ [ „robisurmaniony”, „czupurny”],  [ „krnąbrny”, „rozbrykany” ] ] to największym elementem będą pojedyncze listy: [ „robisurmaniony”, „czupurny”] będzie pierwszym elementem składowym, a  [„krnąbrny”, „rozbrykany”] drugim – i to na tych elementach (jako całościach) wykona się zdefiniowana pętla.

Oczywiście zagnieżdżając pętle w sobie kolejno można dojść od iteracji przez listę w liście do iteracji po literce każdego elementu… Ale to już nie należy do tematu  tego hasła.

Uwaga na angielskie słownictwo: iterable and iterator

To był potoczny opis. Angielskie słownictwo jest „trochę” bardziej precyzyjne w tym kontekście.

  • Iterable to, za dokumentacją Pythona:  „Obiekt zdolny do zwracania swoich członów pojedynczo.”,  czyli ten, na którym można iterować. To to, co opisałam na początku postu jako obiekt iterowalny. Lub nie-iterowalny, jeśli nie można przechodzić po jego elementach.
  • a iterator to oczywiście też obiekt (w końcu to Python, wszystko jest obiektem 😉 )… I ten obiekt, w uproszczeniu, służy do przechodzenia po każdym elemencie tego obiektu który określiliśmy jako iterable (patrz. wyżej) przy użyciu metody __next __ (). Wgłębię się w ten temat w osobnym poście (linki na końcu).

Iteracja w praktyce – Python

Tutaj znalazłeś/znalazłaś opis teoretyczny, a czas na trochę kodu. Zobacz posty (jeśli odnośnik nie jest klikalny, znaczy, że post jest dopiero w planie):

Najważniejsza myśl

Żeby się nie rozmyło: iteracja to przechodzenie kolejno po wszystkich elementach czegoś (obiektu: np.  zmiennej, listy) używane np. w pętlach. Cała reszta to już szczegóły.

About the author

Magdalena Wielobób

Dodaj komentarz