Tilbake
3.5
Lister og datastrukturer

3.5 Lister og datastrukturer

Bruk av lister, tupler og ordbøker for lagring og behandling av data.

50 min
6 oppgaver
ListerTuplerOrdbøkerIndekseringIterering
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 6 oppgaver

Lister og datastrukturer

Når vi programmerer, trenger vi ofte å lagre og håndtere mange verdier samtidig. Tenk deg at du skal lagre temperaturen fra en sensor hvert minutt i en time – da trenger du 60 verdier. Det ville vært upraktisk å lage 60 separate variabler!

Datastrukturer lar oss samle flere verdier i én variabel. I Python finnes det flere typer datastrukturer, og i dette kapittelet skal vi se på de tre viktigste:

- Lister – fleksible samlinger der vi kan legge til, fjerne og endre elementer
- Tupler – uforanderlige samlinger som ikke kan endres etter at de er opprettet
- Ordbøker – samlinger der hver verdi har en nøkkel (som et oppslagsverk)

Vi skal også lære å bruke for-løkker til å gå gjennom alle elementene i en datastruktur.

Lister i Python

En liste er en ordnet samling av verdier. Lister lages med hakeparenteser [] og kan inneholde verdier av ulike typer.

Opprette lister:

temperaturer = [22.5, 23.1, 21.8, 24.0, 22.9]
navn = ["Anna", "Ole", "Kari"]
blandet = [42, "hei", True, 3.14]
tom_liste = []

Indeksering – hvert element har en posisjon (indeks) som starter på 0:

print(temperaturer[0])   # 22.5 (første element)
print(temperaturer[2])   # 21.8 (tredje element)
print(temperaturer[-1])  # 22.9 (siste element)

Slicing – hente ut en del av listen:

print(temperaturer[1:3])  # [23.1, 21.8] (indeks 1 og 2)
print(temperaturer[:2])   # [22.5, 23.1] (de to første)
print(temperaturer[3:])   # [24.0, 22.9] (fra indeks 3 og ut)

Nyttige metoder:

MetodeBeskrivelse
liste.append(x)Legger til x på slutten
liste.insert(i, x)Setter inn x på posisjon i
liste.remove(x)Fjerner første forekomst av x
liste.pop(i)Fjerner og returnerer element på posisjon i
len(liste)Antall elementer
liste.sort()Sorterer listen

✏️Arbeide med en temperaturliste

En sensor har målt temperaturer gjennom dagen: [18.5, 20.1, 22.3, 24.7, 23.1, 19.8]. Finn gjennomsnittet, den høyeste og den laveste temperaturen.

temperaturer = [18.5, 20.1, 22.3, 24.7, 23.1, 19.8]

gjennomsnitt = sum(temperaturer) / len(temperaturer)
hoeyeste = max(temperaturer)
laveste = min(temperaturer)

print(f"Gjennomsnitt: {gjennomsnitt:.1f} °C")  # 21.4 °C
print(f"Høyeste: {hoeyeste} °C")                # 24.7 °C
print(f"Laveste: {laveste} °C")                  # 18.5 °C

Vi bruker de innebygde funksjonene sum(), len(), max() og min() som alle fungerer direkte på lister med tall.

📝Oppgave 1

Hva skrives ut av følgende kode?

farger = ["rød", "grønn", "blå", "gul"]
print(farger[1])

Tupler – uforanderlige lister

En tuppel (tuple) ligner på en liste, men kan ikke endres etter at den er opprettet. Tupler lages med vanlige parenteser ().

koordinat = (59.91, 10.75)   # Breddegrad, lengdegrad
rgb_farge = (255, 128, 0)    # Rød, grønn, blå

Indeksering fungerer akkurat som for lister:

print(koordinat[0])  # 59.91
print(rgb_farge[2])  # 0

Men du kan IKKE endre verdier:

koordinat[0] = 60.0  # TypeError! Tupler kan ikke endres

Når bør du bruke tupler?
- Når dataene ikke skal endres (f.eks. koordinater, farger, innstillinger)
- Tupler er raskere enn lister og bruker mindre minne
- Tupler kan brukes som nøkler i ordbøker (det kan ikke lister)

📝Oppgave 2

Hva er forskjellen mellom en liste og en tuppel i Python?

Ordbøker (dictionaries)

En ordbok (dictionary) lagrer data som nøkkel-verdi-par. Ordbøker lages med krøllparenteser {}.

sensor = {
    "type": "temperatur",
    "verdi": 22.5,
    "enhet": "°C",
    "aktiv": True
}

Hente verdier med nøkkel:

print(sensor["type"])    # "temperatur"
print(sensor["verdi"])   # 22.5

Legge til og endre verdier:

sensor["verdi"] = 23.1          # Endrer eksisterende verdi
sensor["plassering"] = "stue"   # Legger til ny nøkkel

Nyttige metoder:

MetodeBeskrivelse
d.keys()Returnerer alle nøkler
d.values()Returnerer alle verdier
d.items()Returnerer alle nøkkel-verdi-par
d.get(key, default)Henter verdi, returnerer default hvis nøkkelen mangler

✏️Sensordata med ordbok

Lag en ordbok for en fuktighetssensor, og skriv ut all informasjon formatert.

sensor = {
    "navn": "DHT22",
    "fuktighet": 65.3,
    "temperatur": 22.1,
    "plassering": "drivhus"
}

for noekkel, verdi in sensor.items():
    print(f"{noekkel}: {verdi}")

Utskrift:

navn: DHT22
fuktighet: 65.3
temperatur: 22.1
plassering: drivhus

Metoden .items() gir oss både nøkkel og verdi for hvert element, og for-løkken går gjennom alle parene.

📝Oppgave 3

Hva skrives ut av følgende kode?

elev = {"navn": "Kari", "alder": 17, "klasse": "1EDA"}
print(elev["klasse"])

Iterering med for-løkker

En for-løkke lar oss gå gjennom alle elementene i en datastruktur, ett om gangen. Dette kalles iterering.

Iterere over en liste:

sensorer = ["temperatur", "fuktighet", "trykk"]
for sensor in sensorer:
    print(f"Leser av: {sensor}")

Med indeks (enumerate):

malinger = [22.5, 23.1, 21.8]
for i, verdi in enumerate(malinger):
    print(f"Måling {i}: {verdi} °C")

Iterere over en ordbok:

innstillinger = {"lysstyrke": 80, "volum": 50, "kontrast": 70}
for noekkel, verdi in innstillinger.items():
    print(f"{noekkel} = {verdi}")

List comprehension – en kompakt måte å lage nye lister:

tall = [1, 2, 3, 4, 5]
kvadrater = [x**2 for x in tall]  # [1, 4, 9, 16, 25]
✏️Filtrere sensordata med for-løkke

Gitt en liste med temperaturmålinger, finn alle målinger over 25 °C og lagre dem i en ny liste.

malinger = [22.5, 26.1, 24.8, 27.3, 23.0, 25.5, 21.9]
hoye_temp = []

for temp in malinger:
    if temp > 25:
        hoye_temp.append(temp)

print(f"Målinger over 25 °C: {hoye_temp}")
# Målinger over 25 °C: [26.1, 27.3, 25.5]

Alternativt med list comprehension:

hoye_temp = [temp for temp in malinger if temp > 25]

Begge metodene gir samme resultat. List comprehension er mer kompakt, men for-løkken er lettere å forstå for nybegynnere.

📝Oppgave 4

Skriv et Python-program som har en liste med 8 temperaturer. Programmet skal:

a) Skrive ut alle temperaturer med indeks
b) Beregne og skrive ut gjennomsnittet
c) Finne og skrive ut hvor mange målinger som er over gjennomsnittet

Oppsummering

I dette kapittelet har du lært om de viktigste datastrukturene i Python:

- Lister [] – fleksible samlinger som kan endres, med indeksering fra 0
- Tupler () – uforanderlige samlinger, brukes når data ikke skal endres
- Ordbøker {} – nøkkel-verdi-par for organisert datalagring
- For-løkker – brukes til å iterere gjennom alle elementer i en datastruktur
- List comprehension – kompakt syntaks for å lage nye lister

Nøkkelbegreper


BegrepForklaring
ListeForanderlig, ordnet samling med []-syntaks
IndekseringTilgang til enkeltelementer via posisjon (starter på 0)
SlicingHente ut en del av en liste med [start:stopp]
TuppelUforanderlig samling med ()-syntaks
OrdbokNøkkel-verdi-par med {}-syntaks
ItereringÅ gå gjennom alle elementer i en datastruktur
📝Oppgave 5

Lag et Python-program som bruker en ordbok til å lagre informasjon om 3 sensorer (navn, type og siste måling). Bruk en for-løkke til å skrive ut all informasjon formatert, og finn sensoren med den høyeste målingen.

📝Oppgave 6

Hva skrives ut av denne koden?

tall = [10, 20, 30, 40, 50]
print(tall[1:4])

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.