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 datastrukturar

Når vi programmerer, treng vi ofte å lagre og handtere mange verdiar samtidig. Tenk deg at du skal lagre temperaturen frå ein sensor kvart minutt i ein time – då treng du 60 verdiar. Det ville vore upraktisk å lage 60 separate variablar!

Datastrukturar lèt oss samle fleire verdiar i éin variabel. I Python finst det fleire typar datastrukturar, og i dette kapittelet skal vi sjå på dei tre viktigaste:

- Lister – fleksible samlingar der vi kan leggje til, fjerne og endre element
- Tuplar – uforanderlege samlingar som ikkje kan endrast etter at dei er oppretta
- Ordbøker – samlingar der kvar verdi har ein nøkkel (som eit oppslagsverk)

Vi skal òg lære å bruke for-løkker til å gå gjennom alle elementa i ein datastruktur.

Lister i Python

Ei liste er ei ordna samling av verdiar. Lister blir laga med hakeparentesar [] og kan innehalde verdiar av ulike typar.

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 – kvart element har ein posisjon (indeks) som startar 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 ein del av lista:

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

Nyttige metodar:

MetodeSkildring
liste.append(x)Legg til x på slutten
liste.insert(i, x)Set inn x på posisjon i
liste.remove(x)Fjernar første førekomst av x
liste.pop(i)Fjernar og returnerer element på posisjon i
len(liste)Tal på element
liste.sort()Sorterer lista

✏️Arbeide med ei temperaturliste

Ein sensor har målt temperaturar gjennom dagen: [18.5, 20.1, 22.3, 24.7, 23.1, 19.8]. Finn gjennomsnittet, den høgaste og den lågaste 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 dei innebygde funksjonane sum(), len(), max() og min() som alle fungerer direkte på lister med tal.

📝Oppgave 1

Kva blir skrive ut av følgjande kode?

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

Tuplar – uforanderlege lister

Ein tuppel (tuple) liknar på ei liste, men kan ikkje endrast etter at han er oppretta. Tuplar blir laga med vanlege parentesar ().

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 IKKJE endre verdiar:

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

Når bør du bruke tuplar?
- Når dataa ikkje skal endrast (t.d. koordinatar, fargar, innstillingar)
- Tuplar er raskare enn lister og bruker mindre minne
- Tuplar kan brukast som nøklar i ordbøker (det kan ikkje lister)

📝Oppgave 2

Kva er skilnaden mellom ei liste og ein tuppel i Python?

Ordbøker (dictionaries)

Ei ordbok (dictionary) lagrar data som nøkkel-verdi-par. Ordbøker blir laga med krøllparentesar {}.

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

Hente verdiar med nøkkel:

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

Leggje til og endre verdiar:

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

Nyttige metodar:

MetodeSkildring
d.keys()Returnerer alle nøklar
d.values()Returnerer alle verdiar
d.items()Returnerer alle nøkkel-verdi-par
d.get(key, default)Hentar verdi, returnerer default viss nøkkelen manglar

✏️Sensordata med ordbok

Lag ei ordbok for ein fuktssensor, 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 kvart element, og for-løkka går gjennom alle para.

📝Oppgave 3

Kva blir skrive ut av følgjande kode?

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

Iterering med for-løkker

Ei for-løkke lèt oss gå gjennom alle elementa i ein datastruktur, eitt om gongen. Dette blir kalla iterering.

Iterere over ei 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 ei ordbok:

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

List comprehension – ein 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 ei liste med temperaturmålingar, finn alle målingar over 25 °C og lagre dei i ei 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 metodane gir same resultat. List comprehension er meir kompakt, men for-løkka er lettare å forstå for nybyrjarar.

📝Oppgave 4

Skriv eit Python-program som har ei liste med 8 temperaturar. Programmet skal:

a) Skrive ut alle temperaturar med indeks
b) Rekne ut og skrive ut gjennomsnittet
c) Finne og skrive ut kor mange målingar som er over gjennomsnittet

Oppsummering

I dette kapittelet har du lært om dei viktigaste datastrukturane i Python:

- Lister [] – fleksible samlingar som kan endrast, med indeksering frå 0
- Tuplar () – uforanderlege samlingar, brukast når data ikkje skal endrast
- Ordbøker {} – nøkkel-verdi-par for organisert datalagring
- For-løkker – brukast til å iterere gjennom alle element i ein datastruktur
- List comprehension – kompakt syntaks for å lage nye lister

Nøkkelomgrep


OmgrepForklaring
ListeForanderleg, ordna samling med []-syntaks
IndekseringTilgang til enkeltelement via posisjon (startar på 0)
SlicingHente ut ein del av ei liste med [start:stopp]
TuppelUforanderleg samling med ()-syntaks
OrdbokNøkkel-verdi-par med {}-syntaks
ItereringÅ gå gjennom alle element i ein datastruktur
📝Oppgave 5

Lag eit Python-program som bruker ei ordbok til å lagre informasjon om 3 sensorar (namn, type og siste måling). Bruk ei for-løkke til å skrive ut all informasjon formatert, og finn sensoren med den høgaste målinga.

📝Oppgave 6

Kva blir skrive 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.