Ei liste kan inneholde elementer av alle datatyper. Vi har sett eksempler på lister med heltall, flyttall, strenger og boolske variabler. Men ei liste kan også inneholde andre lister.
Eksempel 1:
Vi har målt maksimumstemperaturen i en by hver dag i tre uker, og har laget følgende oversikt
| Dag 1 | Dag 2 | Dag 3 | Dag 4 | Dag 5 | Dag 6 | Dag 7 | |
| Uke 1 | 12 | 10 | 14 | 7 | 8 | 11 | 10 |
| Uke 2 | 10 | 7 | 9 | 6 | 6 | 8 | 15 |
| Uke 3 | 10 | 5 | 3 | 6 | 4 | 3 | 2 |
Her kan vi representere hver uke som ei liste med 7 elementer i Pyton:
grader_uke_1 = [12, 10, 14, 7, 8, 11, 10] grader_uke_2 = [10, 7, 9, 6, 6, 8, 15] grader_uke_3 = [10, 5, 3, 6, 4, 3, 2]
Disse listene kan vi så sette inn i ei ny liste:
grader = [grader_uke_1, grader_uke_2, grader_uke_3]
I Python Tutor ser det slik ut:

Vi ser at grader_uke_1, grader_uke_2 og grader_uke_3 refererer til hver si liste, mens grader referer til ei liste som igjen refererer til grader_uke_1, grader_uke_2 og grader_uke_3.
Vi kan for så vidt også opprette grader uten å gå veien om ukelistene:
grader = [[12, 10, 14, 7, 8, 11, 10], [10, 7, 9, 6, 6, 8, 15], [10, 5, 3, 6, 4, 3, 2]]
I eksempel 1 har vi ei liste som inneholder 3 elementer som hver er lister med 7 elementer. For å referere til et enkeltelement må vi da bruke to indekser. Én for å velge ei av listene, og én for å velge et element i denne lista igjen. Indeksene starter på 0, så hvis vi har opprettet grader slik som i eksempel 1, og skriver
print(grader[0][2])
får vi skrevet ut 14 fordi element nummer 0 i grader er lista grader_uke_1, og element nummer 2 i grader_uke_1 er 14.
Generelt vil indeksene [m][n] gi et element med indeks n i lista med indeks m.
Basert på lista grader fra eksempel 1, avgjør hva som blir skrevet ut hvis vi kjører følgende kode:
print(grader[1][2]) print(grader[2][1]) print(grader[0])
Gjør oppgaven på papir først, og sjekk så ved å kjøre koden om du har rett.
Vil vi gjennomløpe alle elementene i ei liste med lister, må vi ha to nøstede løkker.
Eksempel 2:
Vi har opprettet lista grader som i eksempel 1, og skal finne den høyeste temperaturen i løpet av de tre ukene. Det kan vi gjøre ved hjelp av følgende Python-kode:
# Finner høyeste tall i liste med lister maks_grader = grader[0][0] # Startverdi lik dag 1, uke 1 for grader_uke in grader: # Uke for uke for grader_dag in grader_uke: # Dag for dag i uke if grader_dag > maks_grader: maks_grader = grader_dag print(f"Høyeste temperatur var {maks_grader} grader.")
I eksempel 2 tar vi utgangspunkt i temperaturen første dag i første uke, og leter så gjennom resten av lista for å se om vi finner noe høyere. Her bruker vi altså to nøstede løkker. Koden
for grader_uke in grader:
vil tilordne liste for liste fra grader til grader_uke, ei liste for hvert gjennomløp i den ytre løkka.
I den indre løkka vil koden
for grader_dag in grader_uke:
tilordne tall for tall i lista grader_uke til grader_dag, ett tall for hvert gjennomløp i den indre løkka.
Legg merke til at grader_uke i den ytre løkka er ei liste, mens grader_dag i den indre løkka er et tall.
Vi kan ikke bruke Python-funksjonen max() til å finne den høyeste temperaturen. max(grader) vil returnere lista for uka med den høyeste summen av temperaturer i stedet for den høyeste enkelttemperaturen.
Det er ikke noen teoretisk grense for hvor mange lister vi kan ha inni hverandre, men i praksis er det sjelden behov for mer enn 2-3.
Lister som ligger inni ei annen liste, trenger ikke være like store.
Eksempel 3:
Koden under oppretter lista diverse, som inneholder 2 lister med henholdsvis 3 og 5 elementer.
diverse = [[1, 2, 3], [1, 2, 3, 4, 5]]
Kilder
-
- Matthes A. (2019). Python Crash Course. no starch press
Den som er vant med å programmere i språk som C, vil kanskje lure på hvorfor vi ikke har pekere i Python. Men ser vi på bildet fra Python Tutor over, skjønner vi at vi har pekere, de er bare implisitte. I eksempel 1 er for eksempel grader en peker til ei liste som inneholder pekere til tre andre lister.