Lister - Matematikk 1P-Y - BA - NDLA

Hopp til innhold
Verktøy og mal

Lister

I stedet for å lagre mange tall som hører sammen i hver sin variabel, kan vi putte tallene i ei liste.

Innledning

Vi har fire tall: 10, 12, 13 og 15. Disse kan for eksempel være x-verdier til en funksjon. I et pythonprogram kan vi lagre disse tallene i hver sin variabel og kalle variablene x1, x2, x3 og x4.

Spørsmål – koding

Hva må vi skrive av programkode for å lagre disse x-verdiene i hver sin variabel og skrive dem ut?

Svar

Vi må skrive

x1 = 10
x2 = 12
x3 = 13
x4 = 15
print(x1, x2, x3, x4)

Dersom vi bruker f-streng på siste linje, blir den

print(f"{x1} {x2} {x3} {x4}")

Lister

I stedet for å lagre tallene i hver sin variabel, kan vi putte tallene inn i ei liste som vi kaller x. Da skriver vi

x = [10, 12, 13, 15]

x blir en listevariabel som inneholder 4 element: de 4 tallene 10, 12, 13 og 15. Det er viktig at det blir brukt hakeparenteser [ ] rundt innholdet av lista. For å skrive ut verdien av listevariabelen, skriver vi

print(x)

som vi ville ha gjort dersom vi for eksempel skulle skrive ut innholdet i en heltallsvariabel. Kjører vi de to kodelinjene over, vil vi få utskriften "[10, 12, 13, 15]", altså det samme som vi skrev at listevariabelen x skulle være.

Indeksering av lister

Tallene i lista over har et plassnummer, eller en indeks, som begynner på 0. Det betyr at tallet 10 har indeksen 0, tallet 12 har indeksen 1, og tallet 15 har indeksen 3. Dersom vi vil skrive ut det andre tallet, 12, skriver vi

print(x[1])

siden tallet 12 har indeks 1.

Oppgave – koding

Skriv koden som legger sammen de to første tallene i tabellen.

Løsning

x[0] + x[1]

Dersom vi vil lage ei ny liste y med de tre siste tallene i lista (men ikke det første), skriver vi

y = x[1: 4]

Listevariabelen y får verdien [12, 13, 15]. Merk at vi får tallene fra og med indeks 1 til indeks 4, altså til og med indeks 3, én mindre enn det tallet som står etter kolonet.

Oppgave – koding

Vi har definert lista y slik:

y = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]

Skriv koden som lager ei ny liste z med det tredje, det fjerde og det femte elementet i lista.

Løsning

z = y[2: 5]

Dette gir at listevariabelen z får verdien ["c", "d", "e"] siden kommandoen plukker ut elementene y[2], y[3] og y[4].

Legge til flere elementer i ei liste

Dersom vi ønsker å legge til tallet 20 i lista x over, bruker vi funksjonen, eller mer presist metoden, append().

x.append(20)

Tallet 20 legger seg bakerst og får indeksen 4 siden lista nå har 5 tall.

Antall elementer i ei liste

Vi kan hente ut antall elementer i ei liste med funksjonen len(). Dersom vi vil skrive ut hvor mange elementer det er i listevariabelen x, skriver vi

print(len(x))

En tekststreng er egentlig ei liste

En tekststreng er rett og slett ei liste der elementene er én og én bokstav (ett og ett tegn). Vi bruker

strengvariabel = "Tekststreng"

som eksempel. Det betyr at vi går ut ifra at vi har definert en variabel strengvariabel og satt den lik "Tekststreng".

Vi kan ikke legge til bokstaver og tegn med metoden append() slik som for lister. Dersom vi ønsker å legge "en" til "Tekststreng" i variabelen over, skriver vi

strengvariabel = strengvariabel + "en"

Innholdet i variabelen blir nå "Tekststrengen".

Spørsmål – koding

a) Hva tror du strengvariabel[0] er det samme som? Hva med strengvariabel[3]?

Svar

strengvariabel[0] er det samme som tegnet "T", som er det første tegnet i tekststrengen "Tekststreng". strengvariabel[3] er det samme som tegnet "s", som er det fjerde tegnet. (Husk at nummereringen i lister begynner på 0.)

b) Hva tror du len(strengvariabel) er det samme som?

Løsning

len(strengvariabel) er det samme som tallet 11 siden det er 11 bokstaver i ordet "Tekststreng".

Husk at mellomrom også er et tegn som må telles med (men i eksempelet over var det ikke mellomrom). Tekststrengen "Hei, du!" har 8 tegn.

Pythonkode å lære seg

Vis innhold

Lister

variabelnavn = [verdi1, verdi2, ... ]

Denne koden lager ei liste med navnet "variabelnavn".

Eksempel på liste med tre elementer:

liste1 = ["hus", "bil", "båt"]

liste1[0] er det første elementet i lista og har verdien "hus".

liste1[2] er det tredje elementet i lista og har verdien "båt".

liste1[-1] er det siste elementet i lista (og det samme som det tredje når lista har tre elementer som her).

liste1[1:3] har verdien ["bil", "båt] siden "[1:3] betyr elementene fra og med indeks 1 opp til (men ikke med) 3, altså det andre og det tredje elementet.

len(liste) har verdien 3, siden det er tre elementer i lista.

liste.append("sykkel") legger til elementet "sykkel" bakerst i lista, som nå får fire elementer.

liste2 = [] lager ei tom liste med navnet "liste2".

En tekststreng er ei liste, men ikke alle metoder for lister fungerer på tekststrenger. For eksempel fungerer ikke metoden append() på tekststrenger, men funksjonen len() gjør det.

Aktiviteter

a) Algoritme

Vi ønsker å finne gjennomsnittet av de fire tallene 10, 12, 13 og 15. Skriv algoritmen til et slikt program. (Husk å få med forklarende tekst.)

Løsningsforslag
  • Skriv til skjermen "Dette programmet regner ut gjennomsnittet av de fire tallene 10, 12, 13 og 15.".
  • Legg sammen alle tallene, og del summen på antall tal. Sett resultatet lik variabelen gjennomsnitt.
  • Skriv til skjermen "Gjennomsnittet av tallene er <gjennomsnitt>.".

b) Koding

Bruk kode i sammenheng med lister til å skrive koden til algoritmen i oppgave a). Legg de fire tallene i ei liste med navnet x.

Løsningsforslag

print("Dette programmet regner ut gjennomsnittet "
"av de fire tallene 10, 12, 13 og 15.")
x = [10, 12, 13, 15]
gjennomsnitt = (x[0] + x[1] +x[2] + x[3]) / len(x)
print(f"Gjennomsnittet er {gjennomsnitt}.")

c) Algoritme

Måten vi har regnet ut gjennomsnittet på i oppgaven over er tungvint. Tenk om det var 100 tall vi skulle finne gjennomsnittet av!
Summeringen av tallene kan gjøres med en for-løkke. Vi lager en variabel sum og lar for-løkken gå gjennom tallene i lista og legge dem til sum. Skriv om på algoritmen i a) slik at dette blir mulig.

Løsningsforslag
  • Skriv til skjermen "Dette programmet regner ut gjennomsnittet av de fire tallene 10, 12, 13 og 15.".
  • Sett variabelen sum lik 0.
  • Gå gjennom tallene, og legg de til sum.
  • Sett variabelen gjennomsnitt lik sum delt på antall tall.
  • Skriv til skjermen "Gjennomsnittet av tallene er <gjennomsnitt>.".

d) Koding

Skriv koden til et program som passer til algoritmen over. Bruk for-løkke til summeringen av tallene i lista.

Løsningsforslag

print("Dette programmet regner ut gjennomsnittet "
"av de fire tallene 10, 12, 13 og 15.")
x = [10, 12, 13, 15]
sum = 0
for i in range(0, len(x)):
     sum = sum + x[i]
gjennomsnitt = sum / len(x)
print(f"Gjennomsnittet er {gjennomsnitt}.")

e) Algoritme

Vi ønsker at brukeren av programmet over kan skrive inn fire fritt valgte tall og få regnet ut gjennomsnittet av tallene. Skriv algoritmen til et slikt program.

Løsningsforslag
  • Skriv til skjermen "Dette programmet regner ut gjennomsnittet av fire tall.".
  • Gjør dette fire ganger:

    • Skriv til skjermen "Skriv inn tall nummer ...".
    • Ta imot tallet fra brukeren, og legg det inn i listevariabelen x.
  • (Resten av algoritmen er slik som i oppgave c).)

f) Koding

Skriv koden til et program som passer til algoritmen over. Unngå å bruke variabler som ikke er lister.

Tips til kodingen

Her kan du få bruk for å definere ei tom liste. Det gjør du ved å skrive

liste = []

som gir deg en tom listevariabel med navnet liste. Bruk metoden append() for å fylle lista med tallene fra brukeren. For å legge til tallet 20 i lista, skriver vi

liste.append(20)

Løsningsforslag

print("Dette programmet regner ut gjennomsnittet av 4 tall.")
x = []
sum = 0
for nr in range(1, 5):
     tall = float(input(f"Skriv inn tal nr. {nr}: "))
     x.append(tall)
for i in range(0, len(x)):
     sum = sum + x[i]
gjennomsnitt = sum / len(x)
print(f"Gjennomsnittet er {gjennomsnitt}.")

Merk at vi bruker f-streng i input()-setningen på samme måte som i en print()-setning.

Relatert innhold

Skrevet av Bjarne Skurdal.
Sist faglig oppdatert 05.08.2020