Czym jest iteracja?
W programowaniu iteracja to powtarzanie zestawu instrukcji, zwykle za pomocą pętli, aż zostanie spełniony warunek albo przetworzony każdy element kolekcji. Każde pojedyncze przejście przez powtarzane instrukcje też nazywa się iteracją.
Aktualizacja: 24 września 2026
Program, który wysyła e-mail z przypomnieniem do 10 000 użytkowników, nie zawiera 10 000 kopii kodu wysyłającego. Zawiera ten kod raz, wewnątrz pętli, a pętla wykonuje go raz dla każdego użytkownika. Każde wykonanie to jedna iteracja, a cała pętla to sposób, w jaki program iteruje po użytkownikach.
Jak działa iteracja krok po kroku
Każda pętla przechodzi przez ten sam cykl:
- Sprawdź. Przetestuj warunek pętli, który jest wartością typu boolean: czy jest kolejny element albo czy licznik jest nadal poniżej limitu?
- Wykonaj. Jeśli odpowiedź to prawda, wykonaj ciało pętli raz.
- Zaktualizuj. Przejdź do następnego elementu albo zmień licznik.
- Powtórz. Wróć do kroku 1. Gdy sprawdzenie da fałsz, program kontynuuje od kodu za pętlą.
Tutaj ciało wykonuje się pięć razy, a każda iteracja dodaje kolejną liczbę do bieżącej sumy:
iteration 1 total is now 1
iteration 2 total is now 3
iteration 3 total is now 6
iteration 4 total is now 10
iteration 5 total is now 15
Done: 15
Zmienna total istnieje poza pętlą, więc zachowuje wartość z jednej iteracji na następną. Ten wzorzec, czyli zmienna ustawiona przed pętlą i aktualizowana w jej wnętrzu, nazywa się akumulatorem i pojawia się w niemal każdej pętli, która coś oblicza.
Pętle liczące i pętle z warunkiem
Są dwa rodzaje iteracji. Iteracja określona wykonuje się znaną liczbę razy: raz na każdy element listy albo raz na każdą liczbę od 1 do 5. Pętla for w Pythonie jest stworzona właśnie do tego, często razem z range().
Iteracja nieokreślona powtarza się, dopóki coś się nie wydarzy, a liczba przejść nie jest znana z góry. Do tego pasuje pętla while:
8 years, balance 214.36
Pieniądze, które rosną o 10% rocznie, podwajają się po 8 latach. Program ustalił to przez iterowanie, a nie przez rozwiązanie równania. Przewodniki po pętlach for i pętlach while omawiają oba rodzaje w Pythonie.
Iterowanie po kolekcji
Większość pętli przechodzi przez kolekcję: elementy tablicy, znaki napisu, linie pliku. Pętla for w Pythonie podaje ci każdy element bezpośrednio, a enumerate() dodaje jego pozycję:
0 apple
1 banana
2 cherry
Za kulisami for prosi kolekcję o iterator przez iter(), a potem wywołuje na nim next() raz na iterację. Te same wywołania możesz wykonać sam:
red
green
blue
no more items
Bez wartości domyślnej czwarte next() zgłasza StopIteration. Ten wyjątek to sygnał, po którym pętla for wie, że kolekcja się skończyła.
Inne języki zapisują tę samą ideę inaczej. C liczy za pomocą indeksu, a Java i JavaScript mają też pętlę, która podaje każdy element:
for (int i = 0; i < 3; i++) {
printf("%s\n", colors[i]);
}
for (String color : colors) {
System.out.println(color);
}
for (const color of colors) {
console.log(color);
}
Iteracja a rekurencja
Rekurencja to drugi sposób powtarzania pracy: funkcja wywołuje samą siebie na mniejszej wersji problemu, aż dojdzie do przypadku, na który może odpowiedzieć bezpośrednio. Wszystko, co zapiszesz jednym sposobem, można zapisać drugim, ale zachowują się inaczej:
| Iteracja | Rekurencja | |
|---|---|---|
| Jak powtarza | Pętla wraca na swój początek | Funkcja wywołuje samą siebie |
| Kiedy się kończy | Warunek pętli staje się fałszywy | Zostaje osiągnięty przypadek bazowy |
| Pamięć | Tyle samo dla dowolnej liczby przejść | Jedna ramka stosu na każde otwarte wywołanie |
| Typowa awaria | Pętla nieskończona | Przepełnienie stosu (RecursionError w Pythonie) |
| Dobrze pasuje do | List, liczników, powtarzania do spełnienia warunku | Drzew, zagnieżdżonych danych, dziel i zwyciężaj |
Wiersz o pamięci ma znaczenie w praktyce. Python domyślnie pozwala na około 1000 zagnieżdżonych wywołań, więc rekurencyjna suma 5000 liczb się nie udaje tam, gdzie pętla nie ma żadnego problemu:
5050 5050
12502500
sum_recursive(5000) failed: RecursionError
Wizualizacja rekurencji pokazuje krok po kroku, jak stos wywołań rośnie i maleje.
Częste błędy
Pętla nieskończona. Pętla while, której warunek nigdy nie staje się fałszywy, działa, dopóki nie zatrzymasz programu. Zwykłą przyczyną jest zapomniany krok aktualizacji, na przykład pominięcie count = count - 1.
Pomyłka o jeden. range(1, 5) daje 1, 2, 3 i 4, a nie 5, bo wartość końcowa jest wykluczona. Pętla, która wykona się raz za dużo albo raz za mało, nadal działa bez błędu i daje złą odpowiedź, a to jest błąd logiczny.
Zmienianie listy podczas przechodzenia po niej. Usuwanie elementów z listy, po której iterujesz, sprawia, że pętla pomija elementy:
[1, 2, 3]
Jedna dwójka przetrwała, bo usunięcie pierwszej 2 przesunęło drugą na pozycję, którą pętla już minęła. Zamiast tego zbuduj nową listę: numbers = [n for n in numbers if n != 2].
Co dalej
Pętle przechodzą przez kolekcje, więc naturalną stroną towarzyszącą jest czym jest tablica, a strona co to jest boolean wyjaśnia sprawdzenia prawda albo fałsz, które decydują, kiedy pętla się kończy. Gdy pętla daje zły wynik bez komunikatu o błędzie, przeczytaj, czym jest błąd logiczny. Żeby poćwiczyć pisanie pętli, zacznij kurs Python albo wypróbuj powyższe przykłady w edytorze online Pythona.
Najczęściej zadawane pytania
Jaki jest przykład iteracji?
for, która wyświetla każde imię z listy 100 użytkowników, wykonuje 100 iteracji, po jednej na imię. Pętla while, która pyta o hasło, dopóki nie zostanie wpisane poprawne, to też iteracja, mimo że liczba przejść nie jest znana z góry.Co jest lepsze, rekurencja czy iteracja?
Czy iteracja to to samo co pętla?
for albo while, a iteracja to powtarzanie, które ona wykonuje. Pojedyncze przejście przez ciało pętli też nazywa się iteracją, więc pętla, która wykonuje się 5 razy, wykonuje 5 iteracji.Czym różni się sprint od iteracji?
Co znaczy iterowalny?
for, na przykład lista, napis, słownik, plik albo range. W Pythonie obiekt jest iterowalny, jeśli iter() potrafi utworzyć z niego iterator. Liczby całkowite nie są iterowalne, dlatego for x in 5: zgłasza TypeError.