Bruk av lister, tupler og ordbøker for lagring og behandling av data.
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.
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:
| Metode | Skildring |
|---|---|
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 |
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 °CVi bruker dei innebygde funksjonane sum(), len(), max() og min() som alle fungerer direkte på lister med tal.
Kva blir skrive ut av følgjande kode?
farger = ["rød", "grønn", "blå", "gul"]
print(farger[1])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]) # 0Men du kan IKKJE endre verdiar:
koordinat[0] = 60.0 # TypeError! Tupler kan ikke endresNå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)
Kva er skilnaden mellom ei liste og ein tuppel i Python?
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.5Leggje til og endre verdiar:
sensor["verdi"] = 23.1 # Endrer eksisterende verdi
sensor["plassering"] = "stue" # Legger til ny nøkkelNyttige metodar:
| Metode | Skildring |
|---|---|
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 |
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: drivhusMetoden .items() gir oss både nøkkel og verdi for kvart element, og for-løkka går gjennom alle para.
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]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.
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
| Omgrep | Forklaring |
|---|---|
| Liste | Foranderleg, ordna samling med []-syntaks |
| Indeksering | Tilgang til enkeltelement via posisjon (startar på 0) |
| Slicing | Hente ut ein del av ei liste med [start:stopp] |
| Tuppel | Uforanderleg samling med ()-syntaks |
| Ordbok | Nøkkel-verdi-par med {}-syntaks |
| Iterering | Å gå gjennom alle element i ein datastruktur |
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.
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.