Bruk av lister, tupler og ordbøker for lagring og behandling av data.
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.
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:
| Metode | Beskrivelse |
|---|---|
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 |
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 °CVi bruker de innebygde funksjonene sum(), len(), max() og min() som alle fungerer direkte på lister med tall.
Hva skrives ut av følgende kode?
farger = ["rød", "grønn", "blå", "gul"]
print(farger[1])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]) # 0Men du kan IKKE endre verdier:
koordinat[0] = 60.0 # TypeError! Tupler kan ikke endresNå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)
Hva er forskjellen mellom en liste og en tuppel i Python?
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.5Legge til og endre verdier:
sensor["verdi"] = 23.1 # Endrer eksisterende verdi
sensor["plassering"] = "stue" # Legger til ny nøkkelNyttige metoder:
| Metode | Beskrivelse |
|---|---|
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 |
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: drivhusMetoden .items() gir oss både nøkkel og verdi for hvert element, og for-løkken går gjennom alle parene.
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]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.
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
| Begrep | Forklaring |
|---|---|
| Liste | Foranderlig, ordnet samling med []-syntaks |
| Indeksering | Tilgang til enkeltelementer via posisjon (starter på 0) |
| Slicing | Hente ut en del av en liste med [start:stopp] |
| Tuppel | Uforanderlig samling med ()-syntaks |
| Ordbok | Nøkkel-verdi-par med {}-syntaks |
| Iterering | Å gå gjennom alle elementer i en datastruktur |
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.
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.