Przechodzenie po liście – dwa sposoby pętli
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Lista i pętla to para, która wraca w każdym zadaniu. Po liście można przejść na dwa sposoby – krótszy, „pythonowy”, i dłuższy, z indeksem. Uczysz się obu, bo ten drugi to dosłowny odpowiednik pętli, której użyjesz w C#.
Po tej lekcji:
- przejdziesz po liście na oba sposoby,
- powiesz, kiedy potrzebna jest wersja z indeksem,
- policzysz elementy spełniające warunek,
- zbudujesz nową listę metodą
appendwewnątrz pętli.
Wersja pythonowa – krótsza
oceny = [3, 4, 5, 2]
for ocena in oceny:
print(ocena)
Zapis for ocena in oceny: czyta się dosłownie: dla każdej oceny w liście ocen. Zmienna sterująca przyjmuje po kolei wartości z listy.
- Nie musisz znać długości listy ani używać funkcji
len. - Nie masz dostępu do numeru pozycji – ale zwykle go nie potrzebujesz.
- Nazwę zmiennej sterującej dobierasz sam. Sensowna nazwa czyni kod czytelnym.
To jest domyślny sposób. Gdy chcesz tylko przejść po wszystkich elementach i coś z nimi zrobić, wybierasz właśnie ten.
Wersja z indeksem – dłuższa, ale ważniejsza
for i in range(len(oceny)):
print(f"Ocena {i + 1}: {oceny[i]}")
# Ocena 1: 3
# Ocena 2: 4
Pętla idzie po numerach pozycji, a wartość wyciągasz przez oceny[i]. Wygląda niezgrabnie, ale są dwa powody, dla których i tak się jej uczysz:
- Potrzebujesz jej wszędzie tam, gdzie ma się pojawić numer pozycji („Ocena nr 3”), gdzie podmieniasz element w trakcie pętli albo sięgasz jednocześnie do dwóch list po tym samym indeksie.
- To odpowiednik pętli z C#:
for (int i = 0; i < n; i++). W klasie piątej będziesz nią obsługiwać tablicę kontrolek na ekranie aplikacji.
Numerację dla człowieka uzyskujesz przez i + 1, bo indeksy zaczynają się od zera, a ludzie liczą od jedynki.
Liczenie i filtrowanie w pętli po liście
Schemat jest zawsze taki sam jak przy sumowaniu z lekcji 9: zmienna wynikowa przed pętlą, zmiana w pętli, wypisanie po pętli.
oceny = [3, 5, 2, 6, 4]
ile = 0
for o in oceny:
if o >= 4:
ile += 1
print(ile) # 3
najw = oceny[0]
for o in oceny:
if o > najw:
najw = o
print(najw) # 6
- Zliczanie trafień: licznik zaczyna od zera i rośnie w warunku.
- Budowanie nowej listy: pusta lista przed pętlą,
appendw warunku. - Szukanie największego bez
max: zaczynasz od pierwszego elementu, nie od zera.
Zaczęcie szukania największego od zera zepsuje program dla listy samych liczb ujemnych. Zawsze startuj od lista[0].
Ciekawostka: enumerate
W kodzie z lekcji jest jeszcze trzeci sposób – enumerate, który daje jednocześnie indeks i wartość. Nie jest wymagany na egzaminie, ale warto wiedzieć, że istnieje.
Spróbuj sam
W kodzie z lekcji dopisz do listy oceny kilka nowych wartości i uruchom program ponownie. Zobacz, która pętla wypisuje numery pozycji, a która same wartości.
Zadania z lekcji:
- Dla listy
[3, 5, 2, 4, 6, 3, 5]wypisz każdą ocenę w osobnej linii, wersją pythonową. - Tę samą listę wypisz z numeracją w formacie „Ocena nr 1: 3”. Tym razem użyj pętli z
range(len(...)). - Policz, ile ocen na liście jest wyższych od 3, i wypisz wynik. Nie używaj gotowych funkcji.
- Zbuduj nową listę zawierającą tylko oceny pozytywne, czyli od 2 wzwyż. Wypisz obie listy.
- Dla szybszych: znajdź największą ocenę bez używania funkcji
max, startując od pierwszego elementu listy.
Sprawdź się
- Przejdę po liście na oba sposoby.
- Powiem, kiedy potrzebna jest wersja z indeksem.
- Policzę elementy spełniające warunek.
- Zbuduję nową listę metodą
appendwewnątrz pętli.
Na następnej lekcji: funkcje. Nadasz własnemu fragmentowi kodu nazwę i będziesz go wywoływać, ile razy chcesz.
Notatki
Prezentacja
Kod
Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.