Tilbake
5.4
Funksjoner og moduler

5.4 Funksjoner og moduler

Definere funksjoner, parametre, returverdier og gjenbruk av kode.

30 min
5 oppgaver
FunksjonerParametreReturverdierModuler
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 5 oppgaver

Når én verdi ikke er nok

Tenk deg at du har samlet 100 temperaturmålinger fra et eksperiment. Du kunne lagret dem i 100 ulike variabler -- men det ville vært galskap. I stedet bruker vi en liste: en ordnet samling av verdier i én og samme beholder.

Lister er den mest brukte datastrukturen i Python, og helt sentrale for all databehandling i teknologi og forskning. I dette kapittelet lærer du å opprette og bruke lister, hente ut elementer med indeksering, gå gjennom dem med iterasjon, og bruke innebygde funksjoner og den kompakte list comprehension til å sortere, filtrere og analysere data.

Lister og indeksering

En liste er en ordnet samling av verdier, skrevet med hakeparenteser og komma: temperaturer = [18.3, 21.7, 19.5]. Listen kan inneholde tall, tekst, eller til og med blande datatyper, og en tom liste skrives bare []. Listen er ordnet, foranderlig (du kan endre den) og indeksert. Lengden finner du med len().

Det aller viktigste å forstå er indeksering. Hvert element har en posisjon, en indeks, og -- dette er nøkkelen -- indeksen starter på 0, ikke 1. I listen frukter = ["eple", "banan", "appelsin", "druer"] er frukter[0] «eple» og frukter[2] «appelsin». Du kan også telle bakfra med negative indekser: frukter[-1] er det siste elementet, «druer». Dette er en klassisk kilde til forvirring -- husk at indeks 3 er det fjerde elementet.

Du kan også hente ut en del av en liste med slicing: tall[1:4] gir elementene på indeks 1, 2 og 3 -- legg merke til at sluttindeksen ikke er med. tall[:3] gir alt fra start til indeks 3, og tall[3:] gir alt fra indeks 3 og ut. Og du kan endre et element ved å tilordne en ny verdi: frukter[1] = "mango". Prøver du å hente en indeks som ikke finnes, som frukter[10], får du en feilmelding kalt IndexError. Med temperaturdata fra syv dager betyr dette at «dag 1» er indeks 0, «den siste dagen» er indeks -1, og «dag 3 til 5» er slicing temp[2:5].

📝Oppgave Quiz 1

Bygge, endre og analysere

Lister kommer med mange innebygde metoder for å manipulere dem. Den aller viktigste er append(x), som legger et element til på slutten. Andre nyttige er insert(i, x) for å sette inn på en bestemt plass, remove(x) for å fjerne, sort() for å sortere, og reverse() for å snu rekkefølgen. I tillegg finnes innebygde funksjoner som virker på hele lister: len() gir antallet, sum() summerer tallene, min() og max() finner ytterverdiene, og sorted() lager en ny sortert kopi.

En typisk arbeidsform er å bygge opp en liste trinn for trinn. Du starter med en tom liste, malinger = [], og legger til verdier i en løkke med malinger.append(verdi) -- akkurat slik vi samler inn sensordata. Vær oppmerksom på en viktig forskjell: sort() endrer den opprinnelige listen, mens sorted() lager en ny og lar originalen være urørt. Bruk sorted() når du vil beholde rekkefølgen du hadde.

Med disse verktøyene blir dataanalyse enkelt. Si at du har målt pH-verdier åtte steder i en elv. Da kan du regne gjennomsnittet med sum() / len(), finne ytterpunktene med max() og min(), lage en sortert oversikt med sorted(), og telle hvor mange prøver som er sure ved å gå gjennom listen i en løkke og telle dem som er under 7,0. På få linjer har du gjort en full liten undersøkelse av eksperimentdataene dine.

📝Oppgave Quiz 2

Iterasjon og list comprehension

Å gå gjennom hvert element i en liste kalles iterasjon, og den vanligste måten er en enkel for-løkke: for farge in farger:. Vil du ha med både posisjon og verdi, kan du bruke enumerate(), som gir deg begge på en gang -- praktisk når du skal nummerere en utskrift.

Men Python har et særlig elegant verktøy for å lage og filtrere lister: list comprehension. I stedet for å skrive en hel løkke kan du på én linje lage en ny liste fra en gammel. [x ** 2 for x in tall] lager en liste med kvadratene av alle tallene. Du kan også legge til en betingelse: [x for x in tall if x > 3] plukker ut bare elementene over 3. Dette gjør to ting på en gang -- det kan både transformere og filtrere. [x * 3 for x in tall if x > 5] beholder bare elementene over 5 og ganger hvert av dem med 3.

Nettopp dette gjør list comprehension uvurderlig i databehandling. Har du ti lysmålinger og vil skille de lyse fra de mørke, kan du skrive lyse = [m for m in malinger if m >= 100] og morke = [m for m in malinger if m < 100] på to linjer, og deretter regne gjennomsnittet av de lyse. Det er verdt å nevne at lister ikke er den eneste datastrukturen -- Python har også dictionaries, som lagrer data som nøkkel-verdi-par, slik som en sensoravlesning med navngitte felter for type, enhet, verdi og sted. Men lister er arbeidshesten du kommer til å bruke mest, fra innsamling av data til ferdig analyse.

📝Oppgave Quiz 3

Oppsummering

Vi har sett at en liste er en ordnet samling av verdier, og at indeksering starter på 0, med negative indekser som teller bakfra og slicing der sluttindeksen ikke er med. Listemetoder som append() og sort(), og innebygde funksjoner som len(), sum(), min() og max(), gjør det enkelt å bygge opp og analysere data -- husk at sort() endrer originalen mens sorted() lager en kopi.

Iterasjon med for-løkker går gjennom elementene, og list comprehension lar deg lage og filtrere lister kompakt på én linje, som å skille lyse fra mørke målinger. Sammen med dictionaries for strukturerte data er listen Pythons arbeidshest -- uunnværlig for alt fra innsamling til presentasjon av resultater.

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.