Lister - Naturfag (SF) - NDLA

Hopp til innhald
Verktøy og mal

Lister

I staden for å lagre mange tal som høyrer saman i kvar sin variabel, kan vi putte tala i ei liste.

Innleiing

Vi har fire tal: 10, 12, 13 og 15. Desse kan til dømes vere x-verdiar til ein funksjon. I eit pythonprogram kan vi lagre desse tala i kvar sin variabel og kalle variablane x1, x2, x3 og x4.

Spørsmål – koding

Kva må vi skrive av programkode for å lagre desse x-verdiane i kvar sin variabel og skrive dei 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 staden for å lagre tala i kvar sin variabel, kan vi putte tala inn i ei liste som vi kallar x. Då skriv vi

x = [10, 12, 13, 15]

x blir ein listevariabel som inneheld 4 element: dei 4 tala 10, 12, 13 og 15. Det er viktig at det blir brukt hakeparentesar [ ] rundt innhaldet av lista. For å skrive ut verdien av listevariabelen, skriv vi

print(x)

som vi ville ha gjort dersom vi til dømes skulle skrive ut innhaldet i ein heiltalsvariabel. Køyrer vi dei to kodelinjene over, vil vi få utskrifta "[10, 12, 13, 15]", altså det same som vi skreiv at listevariabelen x skulle vere.

Indeksering av lister

Tala i lista over har eit plassnummer, eller ein indeks, som byrjar på 0. Det betyr at talet 10 har indeksen 0, talet 12 har indeksen 1, og talet 15 har indeksen 3. Dersom vi vil skrive ut det andre talet, 12, skriv vi

print(x[1])

sidan talet 12 har indeks 1.

Oppgåve – koding

Skriv koden som legg saman dei to første tala i tabellen.

Løysing

x[0] + x[1]

Dersom vi vil lage ei ny liste y med dei tre siste tala i lista (men ikkje det første), skriv vi

y = x[1: 4]

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

Oppgåve – koding

Vi har definert lista y slik:

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

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

Løysing

z = y[2: 5]

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

Leggje til fleire element i ei liste

Dersom vi ønskjer å leggje til talet 20 i lista x over, bruker vi funksjonen, eller meir presist metoden, append().

x.append(20)

Talet 20 legg seg bakerst og får indeksen 4 sidan lista no har 5 tal.

Talet på element i ei liste

Vi kan hente ut talet på element i ei liste med funksjonen len(). Dersom vi vil skrive ut kor mange element det er i listevariabelen x, skriv vi

print(len(x))

Ein tekststreng er eigentleg ei liste

Ein tekststreng er rett og slett ei liste der elementa er éin og éin bokstav (eitt og eitt teikn). Vi bruker

strengvariabel = "Tekststreng"

som eksempel. Det betyr at vi går ut ifrå at vi har definert ein variabel strengvariabel og sett han lik "Tekststreng".

Vi kan ikkje leggje til bokstavar og teikn med metoden append() slik som for lister. Dersom vi ønskjer å leggje "en" til "Tekststreng" i variabelen over, skriv vi

strengvariabel = strengvariabel + "en"

Innhaldet i variabelen blir no "Tekststrengen".

Spørsmål – koding

a) Kva trur du strengvariabel[0] er det same som? Kva med strengvariabel[3]?

Svar

strengvariabel[0] er det same som teiknet "T", som er det første teiknet i tekststrengen "Tekststreng". strengvariabel[3] er det same som teiknet "s", som er det fjerde teiknet. (Hugs at nummereringa i lister byrjar på 0.)

b) Kva trur du len(strengvariabel) er det same som?

Løysing

len(strengvariabel) er det same som talet 11 sidan det er 11 bokstavar i ordet "Tekststreng".

Hugs at mellomrom òg er eit teikn som må teljast med (men i eksempelet over var det ikkje mellomrom). Tekststrengen "Hei, du!" har 8 teikn.

Pythonkode å lære seg

Vis innhald

Lister

variabelnamn = [verdi1, verdi2, ... ]

Denne koden lagar ei liste med namnet "variabelnamn".

Eksempel på liste med tre element:

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 same som det tredje når lista har tre element som her).

liste1[1:3] har verdien ["bil", "båt] sidan "[1:3] betyr elementa frå og med indeks 1 opp til (men ikkje med) 3, altså det andre og det tredje elementet.

len(liste) har verdien 3, sidan det er tre element i lista.

liste.append("sykkel") legg til elementet "sykkel" bakerst i lista, som no får fire element.

liste2 = [] lagar ei tom liste med namnet "liste2".

Ein tekststreng er ei liste, men ikkje alle metodar for lister fungerer på tekststrengar. Til dømes fungerer ikkje metoden append() på tekststrengar, men funksjonen len() gjer det.

Aktivitetar

a) Algoritme

Vi ønskjer å finne gjennomsnittet av dei fire tala 10, 12, 13 og 15. Skriv algoritmen til eit slikt program. (Hugs å få med forklarande tekst.)

Løysingsforslag
  • Skriv til skjermen "Dette programmet reknar ut gjennomsnittet av dei fire tala 10, 12, 13 og 15.".
  • Legg saman alle tala, og del summen på talet på tal. Set resultatet lik variabelen gjennomsnitt.
  • Skriv til skjermen "Gjennomsnittet av tala er <gjennomsnitt>.".

b) Koding

Bruk kode i samband med lister til å skrive koden til algoritmen i oppgåve a). Legg dei fire tala i ei liste med namnet x.

Løysingsforslag

print("Dette programmet reknar ut gjennomsnittet "
"av dei fire tala 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 rekna ut gjennomsnittet på i oppgåva over er tungvint. Tenk om det var 100 tal vi skulle finne gjennomsnittet av!
Summeringa av tala kan gjerast med ei for-lykkje. Vi lagar ein variabel sum og lèt for-lykkja gå gjennom tala i lista og leggje dei til sum. Skriv om på algoritmen i a) slik at dette blir mogleg.

Løysingsforslag
  • Skriv til skjermen "Dette programmet reknar ut gjennomsnittet av dei fire tala 10, 12, 13 og 15.".
  • Set variabelen sum lik 0.
  • Gå gjennom tala, og legg dei til sum.
  • Set variabelen gjennomsnitt lik sum delt på talet på tal.
  • Skriv til skjermen "Gjennomsnittet av tala er <gjennomsnitt>.".

d) Koding

Skriv koden til eit program som passar til algoritmen over. Bruk for-lykkje til summeringa av tala i lista.

Løysingsforslag

print("Dette programmet reknar ut gjennomsnittet "
"av dei fire tala 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 ønskjer at brukaren av programmet over kan skrive inn fire fritt valde tal og få rekna ut gjennomsnittet av tala. Skriv algoritmen til eit slikt program.

Løysingsforslag
  • Skriv til skjermen "Dette programmet reknar ut gjennomsnittet av fire tal.".
  • Gjer dette fire gonger:

    • Skriv til skjermen "Skriv inn tal nummer ...".
    • Ta imot talet frå brukaren, og legg det inn i listevariabelen x.
  • (Resten av algoritmen er slik som i oppgåve c).)

f) Koding

Skriv koden til eit program som passar til algoritmen over. Unngå å bruke variablar som ikkje er lister.

Tips til kodinga

Her kan du få bruk for å definere ei tom liste. Det gjer du ved å skrive

liste = []

som gir deg ein tom listevariabel med namnet liste. Bruk metoden append() for å fylle lista med tala frå brukaren. For å leggje til talet 20 i lista, skriv vi

liste.append(20)

Løysingsforslag

print("Dette programmet reknar ut gjennomsnittet av fire tal.")
x = []
sum = 0
for nr in range(1, 5):
     tal = float(input(f"Skriv inn tal nr. {nr}: "))
     x.append(tal)
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()-setninga på same måte som i ei print()-setning.

Relatert innhald

Skrive av Bjarne Skurdal.
Sist fagleg oppdatert 05.08.2020