Lista jest sekwencją kilku zmiennych, zgrupowanych pod jedną nazwą. Zamiast pisać program z wieloma zmiennymi x0
, x1
, x2
, ... można zdefiniować pojedynczą zmienną x i uzyskać dostęp do jej elementów x[0]
, x[1]
, x[2]
itd. Co ważniejsze, można umieścić inne wyrażenia i zmienne wewnątrz nawiasów kwadratowych, takich jak x[i]
i x[i+1]
. Pozwala to radzić sobie z dowolnie dużymi zbiorami danych przy użyciu tylko jednego małego kodu.
Jednym ze sposobów utworzenia listy jest otoczenie nawiasami kwadratowymi kilku wartości oddzielonych przecinkami:
myList = ["the first value in the list", 1999, 4.5]Spowoduje to utworzenie listy o nazwie
myList
o długości 3. Każdy element listy otrzymuje numer zwany indeksem: element początkowy ma indeks 0, następny element ma indeks 1 i tak dalej. Poszczególne zmienne zawierające listę mają nazwy
«listName»[«indexNumber»]
W tym przykładzie myList[0]
to zmienna, której wartością jest łańcuch "the first value in the list"
i print(myList[2])
spowoduje wydruk 4.5
. Można również zmieniać wartości elementów na liście i wydrukować całe listy:
Jak widać numbers[0]
traktowane jest jak zmienna: ma wartość i można ją zmienić.
Spróbuj przewidzieć końcowy stan wizualizowanego przykładu poniżej, a następnie porównaj go ze stanem uzyskanym po uruchomieniu kodu.
Dobrze! Spójrz na instrukcje przypisania (druga linia). Wartość rzeczy [3] po prawej stronie wynosi 12. Po lewej stronie rzeczy [0] to 2, więc rzeczy [stuff [0]] odnoszą się do zmiennych [2]. Wartość tej zmiennej jest aktualizowana (od 80) do 12.
stuff = [2, 25, 80, 12]
stuff[stuff[0]] = stuff[3]
print(stuff)
stuff[3]
po prawej stronie wynosi 12
. Po lewej stronie, stuff[0]
wynosi 2
, więc stuff[stuff[0]]
odnosi się do zmiennej stuff[2]
. Wartość tej zmiennej jest aktualizowana (z 80
do 12
).To, co Python nazywa listą w większości innych języków programowania, jest nazywane tablicą. Python ma też coś innego & bardziej zaawansowane, co nazywa tablicami. |
Typowy błąd
Jeśli spróbujesz zapytać Pythona o indeks, który nie istnieje, otrzymasz błąd:
W powyższym przykładzie, ponieważ myList
ma długość 4, a pierwszy indeks wynosi 0, maksymalny możliwy indeks to 3. Pytanie o indeks 4, 5 lub coś większego powoduje ten rodzaj błędu.
Zwykłe użyteczne operacje
Długość Listy: len(«list»)
Aby określić liczbę elementów na liście, wywołujemy na tej liście funkcję len()
. Sprawdź, w jaki sposób range
jest używany w poniższym przykładzie.
W trakcie pisania kodu zazwyczaj używamy polecenie len, które może pracować na listach o dowolnej długości, jak w powyższym przykładzie i w następnym ćwiczeniu.
Czy listy są takie same jak łańcuchy?
W tym momencie można zauważyć, że operacje na listach są takie same jak na łańcuchach: obie można przekazać do funkcji len()
w celu uzyskania ich długości, obie korzystają z X[«index»]
do wyodrębnienia poszczególnych elementów. Listy i łańcuchy są rzeczywiście powiązane: obie w Pythonie są to "typy sekwencji". Jedną z głównych różnic jest to, że nie można w łańcuchach zmieniać pojedynczych znaków.
Z tego powodu listy nazywane są typem zmiennym, a łańcuchy niezmiennym; Zobaczysz więcej informacji na ten temat w lekcji 17.
Łączenie i Tworzenie
Z lekcji o typie str
wiemy, że możliwe jest użycie +
do scalenia (łączenia) dwóch łańcuchów. Możesz to samo robić z listami:
Podobnie można użyć symbolu mnożenia *
do rozszerzenia listy przez jej powtórzenie. Jest to użyteczne przy tworzeniu nowej listy wymaganej długości.
Aby rozwiązać następne ćwiczenie, użyj jednego z operatorów, który właśnie wprowadziliśmy i pętli for
.
Koniec Linii: Ujemne Indeksy
Aby pobrać ostatni element listy, użyj:
«listName»[-1]
Ogólnie rzecz biorąc, L[-k]
zwraca k
’aty element od końca listy; Python obsługuje to wewnętrznie przez przełożenie na L[len(L)-k]
. Ten zapis również działa na łańcuchach!
max
i sum
Funkcja max
, którą widzieliśmy wcześniej, może być również zastosowana do listy numerów: zwraca największą liczbę z listy. Podobnie sum(L)
zwraca sumę elementów z listy L
.
Pętle poprzez Listy
Bardzo często (podobnie jak w poprzednim ćwiczeniu) pętla przechodzi przez każdą wartość listy. Python umożliwia skrót do wykonania tego typu operacji, nazywanej zwykle pętlą "for all" lub "for each". W szczególności, gdy L jest listą, ten kod
for x in L: «blok ciała pętli»wykonuje następujące czynności: na początek
x
przyjmuje wartość pierwszej pozycji z L
, a ciało jest wykonywane; następnie x
przyjmuje drugą wartość z L
, a ciało jest wykonywane; jest to kontynuowane dla wszystkich pozycji z L
.
Oto wizualizowany przykład wydrukowania elementów listy:
Pętla "for all" również działa na łańcuchach: spróbuj dla znaku w "hello"
.
Dobra robota! Możesz przejść do następnej lekcji lub spróbować wykonać kilka ćwiczeń bonusowych poniżej.
x
, która spowoduje, że mystery(x)
będzie działać bez końca?
def mystery(x):
a = [0, 4, 0, 3, 2]
while x > 0:
x = a[x]
return "Done"