W poprzednim artykule opisałam podstawy dotyczące list. W tym artykule przyjrzymy się temu zagadnieniu bliżej.
Listy są mutowalne
Tak, jak napisałam wcześniej, dane w liście mogą być edytowane w trakcie wykonywania programu. Można to zrobić na kilka różnych sposobów. Najprostszym z nich jest przypisanie nowej wartości wg indeksu w liście. Można zastosować także metody append oraz pop. Pierwsza z nich dodaje nową wartość do listy, druga ją usuwa.
x = [1, 2, "trzy", "cztery", 5]
x[2] = "nowa wartość"
print(x)
# wynikiem jest [1, 2, 'nowa wartość', 'cztery', 5]
kr = (1, 2, 10)
# kr[2] = "coś"
# krotki nie są mutowalne, więc próba edycji krotki wyrzuca błąd
x = [1, 2, 3]
# dodaje nową wartość (10) do listy
x.append(10)
print(x)
# wynikiem jest [1, 2, 3, 10]
# bez arugmentów, ta metoda usuwa ostatni element z listy
x.pop()
print(x)
# wynikiem jest [1, 2, 3]
# możemy podać indeks elementu, który chcemy usunąć (indeks 0 czyli pierwszy element)
x.pop(0)
print(x)
# wynikiem jest [2, 3]
Iteracja listy
W artykule o pętlach wspomniane było to, iż pętla for może służyć do iteracji po listach (krotkach, zbiorach i słownikach także). Możemy to zrobić na kilka różnych sposobów.
- Pierwszy z nich jest najbardziej intuicyjny - tworzymy zwykłą pętlę, która wykonuje się taką liczbę razy, jak długa jest nasza lista. Do sprawdzenia długości listy używamy funkcji len (skrót od angielskiego słowa length).
- Drugi to użycie pętli bezpośrednio do pętli. Wtedy zmienna pomoicnicza za wartość przyjmuje każdy kolejny element z pęli (jedno przejście pętli - jeden element listy)
- Trzeci to użycie funkcji enumerate. Jest to połączeni dwóch poprzednich rozwiązań. Mamy tutaj dwie zmienne pomocnicze. Pierwsza z nich zapamiętuje indeks bieżącego elementu, druga zaś sam element.
x = ["jeden", "dwa", "trzy", "cztery"]
print(len(x))
# wynikiem jest długość naszej pętli, czyli 4
# sposób I
# ta pętla wypisuje wszystkie kolejne elementy z listy
for i in range(len(x)):
print(x[i])
# sposób II
# działa dokładnie tak samo jak pierwsza
for i in x:
print(i)
# sposób III
# ta pętla w każdej linii wypisuje zarówno indeks elementu, jak i sam element
for i, i2 in enumerate(x):
print(i, i2)
Warto tutaj zaznaczyć to, że działa to dokładnie tak samo dla krotek. Wyrażenia listowe
Załóżmy sytuację, w której chcemy stworzyć listę, która będzie przechowywała liczby od 0 do 9. Możemy to zrobić na sztywno wypisując po kolei te liczby. Możemy także ułatwić sobie życie i użyć do tego pętli z poznaną już metodą append.
# najpierw tworzymy pustą listę
x = []
for i in range(0, 10):
# dodajemy kolejne elementy do listy
x.append(i)
print(x)
# nasza lista rzeczywiście ma liczby od 0 do 9
W Pythonie możemy to zrobić w zaledwie jednej linijce. Taki zapis nazywamy wyrażeniem listowym.
# tworzy nam to tę listę tak samo jak kod powyżej
x = [i for i in range(0, 9)]
Witam Wodzu, widzę ze strona prężnie się rozwija a Pana uczniowie nie próżnują. Nie oczekiwałbym niczego innego od uczniów takiej wspaniałej osoby jak Pan. Aż serce się raduje jak widzę jakieś nowe post o tematyce programowania, sieci i IT, to nie to samo co my kiedyś robiliśmy z kategoriami takimi jak film, gry i nowinki, jednak jest jeszcze przyszłość dla młodego pokolenia. Życzę miłego dnia i pozdrawiam, Landryna.