Python tutorial #7 – Więcej o listach

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.

  1. 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).
  2. 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)
  3. 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)]

Ten post ma jeden komentarz

  1. Landryna

    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.

Dodaj komentarz