Listy: podstawy – jedna nazwa na wiele wartości
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Do tej pory jedna zmienna trzymała jedną wartość. Przy dwudziestu ocenach musiałbyś utworzyć dwadzieścia zmiennych – i nie dałoby się przejść po nich pętlą. Lista przechowuje wiele wartości pod jedną nazwą.
Po tej lekcji:
- utworzysz listę i wypiszesz jej wybrany element,
- powiesz, jaki indeks ma ostatni element listy o dziesięciu elementach,
- podmienisz element i dopiszesz nowy metodą
append, - rozpoznasz
IndexErrori będziesz wiedzieć, co go powoduje.
Wiele wartości w jednej zmiennej
Wartości zapisujesz w nawiasach kwadratowych, rozdzielone przecinkami.
oceny = [3, 4, 5, 2, 4]
imiona = ["Ala", "Ola"]
puste = []
print(oceny) # [3, 4, 5, 2, 4]
- Lista może zawierać liczby, teksty albo jedno i drugie naraz.
- Może być pusta:
oceny = []. - Wypisana przez
printpokazuje się razem z nawiasami.
Indeksy – numeracja zaczyna się od zera
Do pojedynczego elementu sięgasz przez numer pozycji, podany w nawiasach kwadratowych po nazwie listy. Pierwszy element ma numer 0, nie 1.
oceny = [3, 4, 5, 2, 4]
# 0 1 2 3 4
print(oceny[0]) # 3
print(oceny[2]) # 5
print(oceny[-1]) # 4 – ostatni
print(len(oceny)) # 5
- Lista pięcioelementowa ma indeksy od 0 do 4.
- Indeks ujemny liczy od końca:
-1to ostatni element,-2przedostatni. - Funkcja
lenpodaje liczbę elementów. Ostatni indeks to zawszelen(lista) - 1.
Numerowanie od zera obowiązuje też w C#. To nie dziwactwo Pythona, tylko standard w programowaniu.
IndexError – sięgnąłeś poza listę
Sięgnięcie po oceny[5] w liście pięcioelementowej kończy się błędem IndexError: list index out of range. To jedna z najczęstszych pomyłek przy pracy z listami – zwykle wynika z zapomnienia, że liczymy od zera.
Zmiana i dopisywanie elementów
Element można podmienić. Wystarczy przypisać nową wartość pod dany indeks. Stara wartość znika, długość listy się nie zmienia.
Element można dopisać na koniec. Służy do tego append: nazwa listy, kropka, słowo append i wartość w nawiasie. Lista rośnie o jeden.
oceny = [3, 4, 5]
oceny[1] = 6
print(oceny) # [3, 6, 5]
oceny.append(2)
print(oceny) # [3, 6, 5, 2]
append to pierwszy przykład metody, czyli funkcji przypisanej do konkretnego obiektu. Wywołujesz ją zawsze przez kropkę po nazwie.
Do pustej listy też można dopisywać. Zaczęcie od oceny = [] i dopisywanie w pętli to bardzo częsty schemat.
Listy są zmienne, teksty nie
W lekcji 5 widziałeś, że pojedynczego znaku w tekście nie da się podmienić. Z listą jest inaczej: oceny[0] = 5 działa. Zapamiętaj tę różnicę – wróci jeszcze nie raz.
Spróbuj sam
W kodzie z lekcji usuń # z linii print(oceny[100]) i uruchom program – zobaczysz prawdziwy IndexError.
Zadania z lekcji:
- Utwórz listę z pięcioma ocenami. Wypisz osobno: pierwszą, trzecią, ostatnią oraz liczbę wszystkich ocen.
- Utwórz listę z imionami trzech osób. Podmień drugie imię na inne i wypisz listę przed zmianą i po zmianie.
- Utwórz pustą listę. Dopisz do niej pięć liczb przy pomocy
append, po każdym dopisaniu wypisując aktualną zawartość. - Napisz program, który celowo sięgnie poza koniec listy. Zapisz w komentarzu treść komunikatu błędu.
Sprawdź się
- Utworzę listę i wypiszę jej wybrany element.
- Powiem, jaki indeks ma ostatni element listy o dziesięciu elementach.
- Podmienię element i dopiszę nowy metodą
append. - Rozpoznam IndexError i wiem, co go powoduje.
Na następnej lekcji: operacje na całej liście – suma, największy, najmniejszy, sortowanie. Większość rzeczy Python policzy za ciebie.
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.