Oppprette lister med inline-«for»

Av og til kan det være at vi skal opprette lister som inneholder følger med tall som ikke er hele. Da kan vi ikke bruke range() direkte, fordi range() bare gir ut heltall. Det vi kan gjøre, derimot, er å bruke range() til å generer heltall, og så beregne tallene vi ønsker, ut fra disse. La oss for eksempel si at vi skal opprette ei liste, x, som inneholder tallene 0,1, 0,2, 0,3 og 0,4. Da kan vi la range() generere heltallene fra 1 til 4, og så dividere disse med 10 før vi legger dem inn i x, slik det er vist i eksempel 1.

Eksempel 1:

# Oppretter lista x med tallene 0,1, 0,2, 0,3 og 0,4
x = []
for n in range(1, 5):
    x.append(n/10)

I eksempel 1 oppretter vi først x som ei tom liste, og går så inn i ei løkke der variabelen n gjennomløper heltallene fra 1 til 4, mens vi legger n/10 til på slutten av lista.

Ved hjelp av noe som heter inline-for, kan vi imidlertid erstatte løkka med kode på én enkelt linje, slik det er vist i eksempel 2.

Eksempel 2:

# Oppretter lista x med tallene 0,1, 0,2, 0,3, 0,4
x = [n/10 for n in range(1, 5)]

I eksempel 2 ser vi at vi mellom klammeparentesene bruker samme uttrykk som i første linje i for-løkka i eksempel 1, for n in range(1, 5). I stedet for å bruke en innrykket blokk til å angi hva vi skal gjøre med løkkevariabelen n, skriver vi imidlertid bare et uttrykk som bruker n, foran kodeordet for, slik som n/10 i eksempel 2.

Denne mekanismen heter list comprehension på engelsk, og kalles derfor også listekomprehensjon på norsk.

Oppgave 1:

Vi har koden under, som oppretter ei liste, y, med kvadratet av heltallene fra 1 til 10. 

# Oppretter lista y med tallene 1, 4, 9, ...
y = []
for n in list(range(1, 11))
    y.append(n**2)

Skriv om koden slik at den bruker inline-for til å opprette y.

Se løsningsforslag

Inline-for er et eksempel på inline-kode, som det finnes mange varianter av

Inline-for kan også brukes hvis vi skal opprette ei liste med innhold beregnet ut fra innholdet i en annen liste, slik det er vist i eksempel 3. Der oppretter vi først lista x som i eksempel 2, men oppretter også lista y med tallene fra x opphøyd i tredje.

Eksempel 3:

# Oppretter lista x med tallene 0,1, 0,2, 0,3, 0,4,
# og lista y med n**3 for hver n i x
x = [n/10 for n in range(1, 5)]
y = [n**3 for n in x]

Oppgave 2:

Vi har koden under, som oppretter ei liste, x, med heltallene fra 1 til 10, og ei liste, z, med 5n2 + 3n − 4 for hver n i x.

# Oppretter lista x med tallene 1 ... 10,
# og lista z med 5n**2 + 3n - 4 for hver n i x
x = list(range(1, 11))
z = []
for n in x:
    z.append(5 * n**2 + 3 * n - 4)

Skriv om koden slik at den bruker inline-for til å opprette z.

Se løsningsforslag

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press

Søke i lister

Å søke etter innhold i lister er noe vil ha behov for å gjøre mye. For å avgjøre om en verdi finnes i ei liste eller ikke, kan vi bruke kodeordet in. Hvis liste er ei liste og a en verdi, vil uttrykket a in liste være True hvis a finnes i liste, False hvis ikke.

Eksempel 1:

# Oppretter lista demo, og lar brukeren søke etter tall
demo = [7, -3, 8, 4, 8]
tall = int(input("Hvilket tall vil du søke etter? "))
print(tall in demo)

Skriver vi for eksempel at vi vil søke etter 7, får vi skrevet ut True. Skriver vi at vi vil søke etter 11, får vi skrevet ut False.

I stedet for å skrive ut True og False direkte kan vi bruke verdien i en if-konstruksjon, som i eksempel 2.

Eksempel 2:

# Oppretter lista demo, og lar brukeren søke etter tall
demo = [7, -3, 8, 4, 8]
tall = int(input("Hvilket tall vil du søke etter? "))
if tall in demo:
    print(f"{tall} finnes i demo.")
else:
    print(f"{tall} finnes ikke i demo.")

Skriver vi for eksempel at vi vil søke etter 7, får vi skrevet ut 7 finnes i demo. Skriver vi at vi vil søke etter 11, får vi skrevet ut 11 finnes ikke i demo.

Er vi interessert i indeksen til verdien vi søker etter, kan vi bruke liste-metoden index(), som beskrives i artikkelen om liste-metoder. index() finner indeksen til første forekomst av et element i ei liste. Dersom elementet ikke finnes i lista, får vi imidlertid en feilmelding. Før vi bruker index(), bruker vi derfor in til å sjekke om elementet faktisk finnes i lista, slik det er vist i eksempel 3.

Eksempel 3:

# Oppretter lista demo, og lar brukeren finne indeks til et tall
demo = [7, -3, 8, 4, 8]
tall = int(input("Hvilket tall vil du finne indeks til? "))
if tall in demo:
    print(f"{tall} har indeks {demo.index(tall)}.")
else:
    print(f"{tall} finnes ikke i lista.")

Skriver vi for eksempel at vi vil finne indeks til 7, får vi skrevet ut 7 har indeks 0. Skriver vi at vi vil finne indeks til 11, får vi skrevet ut 11 finnes ikke i lista.

Ofte har vi imidlertid behov for å gjøre mer avanserte søk i ei liste, der vi selv må skrive kode som gjennomløper lista og sjekker elementene ett for ett.

I eksempel 4 undersøker vi hvor mange tall i ei liste som er partall. Et tall, a, er partall hvis a % 2 == 0.

Eksempel 4:

# Oppretter lista demo, og teller antall partall i lista
demo = [7, -3, 8, 4, 8]
antall = 0
for tall in demo:
    if tall % 2 == 0:  # Tallet er et partall
        antall += 1
print(f"Lista inneholder {antall} partall.")

For å telle partall oppretter vi en variabel å telle med. Vi har kalt den antall, men den kan hete hva som helst. Variabelen setter vi i utgangspunktet til 0, og øker verdien med 1 for hvert partall vi finner. En slik variabel kaller vi gjerne en akkumulator.

Når vi kjører koden, får vi skrevet ut Lista inneholder 3 partall., fordi den inneholder partallene 8, 4 og 8.

Oppgave 1:

Skriv kode som oppretter lista ensifrede, som inneholder heltallene fra og med 1 til og med 9, og skriver ut hvor mange av tallene i lista som er delelige med 4.

Riktig svar er 2, nemlig tallene 4 og 8.

Hint: Husk at du kan bruke list(range()) til å generere ei liste med tall.

Hint: Et tall, a, er delelig med 4 hvis a % 4 == 0.

Se løsningsforslag

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press

Gjenomløpe lister

Gjennomløpe med forin

I artikkelen om for-løkker ser vi hvordan vi kan bruke range() til å tildele verdier til en løkkevariabel. Nå skal vi se at vi også kan bruke ei liste til det samme. Elementene i lista blir da én for én tildelt til løkkevariabelen når løkka gjennomløpes.

Eksempel 1 viser hvordan vi kan bruke ei liste i ei for-løkke til å skrive ut innholdet i lista demo, element for element.

Eksempel 1:

# Oppretter lista demo og skriver ut innholdet, element for element
demo = [7, -3, 8, 4, 8]
for n in demo:
    print(n)

Oppgave 1:

Skriv Python-kode som oppretter ei liste som inneholder alle oddetall fra og med 1 til og med 19, og skriver dem ut, ett for ett.

Av og til kan det være at vi ønsker å få nummerert elementene vi henter ut fra ei liste. Til det kan vi bruke funksjonen enumerate(). enumerate() returnerer et tallpar, der et løpenummer kommer først, deretter selve elementet.

La oss for eksempel si at vi har ei liste med primtallene under 30, og ønsker å skrive dem ut på formen Primtall nummer 1 er 2, Primtall nummer 2 er 3, og så videre. Det kan vi gjøre som vist i eksempel 2.

Se løsningsforslag

Eksempel 2:

# Oppretter ei liste med primtall og skriver dem ut nummerert
primliste = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
for nummer, primtall in enumerate(primliste):
    print(f"Primtall nummer {nummer + 1} er {primtall}")

Grunnen til at vi skriver nummer + 1 i stedet for bare nummer, er at løpenumrene starter på 0, på samme måte som indekser. Det er imidlertid mulig å angi en startverdi for løpenummeret ved å angi teksten «start» sammen med tallet vi vil starte på. Eksempel 3 gjør det samme som eksempel 2, men angir at løpenummeret skal starte på 1, slik at vi slipper å addere 1 til nummer i utskriften.

Eksempel 3:

# Oppretter ei liste med primtall og skriver dem ut nummerert
primliste = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
for nummer, primtall in enumerate(primliste, start = 1):
    print(f"Primtall nummer {nummer} er {primtall}")

Oppgave 2:

Endre koden fra oppgave 1, slik at også nummeret på oddetallet skrives ut, sammen litt forklarende tekst. For eksempel Oddetall nummer 1 er 1, Oddetall nummer 2 er 3, og så videre.

Se løsningsforslag

Gjennomløpe med indekser

Vi kan også bruke indekser til å gjennomløpe ei liste. Vi bruker da range() til å generere de aktuelle indeksene, og refererer så til elementene i lista ved å angi indeksene i klammeparentes. Dette er illustrert i eksempel 4, som gir samme utskrift som eksempel 2 og 3.

Eksempel 4:

# Oppretter ei liste med primtall og skriver dem ut nummerert
primliste = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
for n in range(len(primliste)):
    print(f"Primtall nummer {n + 1} er {primliste[n]}")

I eksempel 4 er det 10 elementer i primliste, så vi kan generere indeksene ved å skrive range(10), noe som vil gi tallene fra 0 til 9. Men da låser vi oss til at primliste inneholder 10 elementer. Dersom vi siden legger til eller fjerner elementer, vil vi måtte bytte ut 10-tallet. Det er også fort å gjøre feil hvis vi teller antall elementer i ei liste for hånd. I stedet for å angi et fast tall som argument til range(), bruker vi derfor den innebygde Python-funksjonen len(). Brukt på ei liste, returnerer len() antall elementer i lista. Hvis ei liste, a, inneholder n elementer, vil len(a) returnere n, og range(len(a)) vil gi tallene fra og med 0 til og med n − 1, som jo er indeksene i ei liste med n elementer.

Å bruke faste verdier i stedet for dynamisk genererte verdier, slik som 10 i stedet for len(), kalles hardkoding, og er generelt noe vi bør unngå, fordi det gjør koden vår mindre fleksibel.

Noen programmeringsspråk har ikke en forin-mekanisme lik den vi har brukt i eksempel 1, 2 og 3. Da er vi nødt til å bruke indekser til gjennomløp, slik som i eksempel 4. I Python bør vi imidlertid bruke forin når vi kan, fordi det gir enklere og mer oversiktlig kode.

Det finnes imidlertid tilfeller der å basere seg på indekser for å gjennomløpe ei liste er et riktig valg, typisk hvis vi skal referere til elementer som ikke kommer etter hverandre, eller flere elementer samtidig.

Eksempel 5 viser kode som gjennomløper ei liste for å sjekke om innholdet stemmer med Fibonaccis tallfølge, der hvert tall er lik summen av de to tallene foran. Hvis for eksempel lista fibo = [1, 1, 2, 3, 5, 8, 13], vil koden skrive ut at lista inneholder Fibonaccis følge. Men hvis fibo = [1, 1, 2, 3, 5, 8, 12], vil koden skrive ut at lista ikke inneholder Fibonaccis følge, fordi 5 + 8 ikke er 12.

Eksempel 5:

# Sjekker om lista fibo inneholder Fibonaccis tallfølge
er_fibo = True
for n in range(2, len(fibo)):
    if fibo[n] != fibo[n - 1] + fibo[n - 2]:
        er_fibo = False
if er_fibo == True:
    print("Lista inneholder Fibonaccis følge.")
else:
    print("Lista inneholder ikke Fibonaccis følge.")

Koden i eksempel 5 bruker range() til å generere n som en indeks som går fra 2 til enden av lista fibo. For hver n sjekker vi så om elementet med indeks n er lik summen av de to elementene foran, det vil si de med indeks n − 1 og n − 2. Hvis dette ikke er tilfelle, settes den boolske variabelen er_fibo til False. Hvis hele lista blir gjennomløpt uten at er_fibo, som i utgangspunktet er True, er blitt satt til False, inneholder lista Fibonaccis følge. En variabel som er_fibo, som brukes til å signalisere en tilstand, kalles et flagg.

Vi burde strengt tatt også sjekket om de to første elementene begge er 1, men vi droppet det for oversiktens skyld.

Koden i eksempel 5 kan for øvrig skrives bedre, slik det beskrives i artikkelen om break.

Oppgave 3:

Endre koden fra oppgave 1 slik at den bruker indekser til å skrive ut lista med oddetallene i omvendt rekkefølge.

Se løsningsforslag

Hvis vi skal endre elementene ei liste mens vi gjennomløper den, må vi også bruke indekser, som i eksempel 6, der vi kvadrerer alle elementene i ei liste.

Eksempel 6:

# Kvadrerer elementene i lista demo
demo = [1, 2, 3, 4]
for n in range(len(demo)):
    demo[n] **= 2

Alternativt kan vi skrive koden i eksempel 6 som i eksempel 7, der vi bruker enumerate() til å generere indeksene.

Eksempel 7:

# Kvadrerer elementene i lista demo
demo = [1, 2, 3, 4]
for n, tall in enumerate(demo):
    demo[n] = tall**2

SkjermfilmSe film om lister

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press

Programmeringsspråket JavaScript har en mekanisme tilsvarende forin, som heter forof. Programmeringsspråket C har imidlertid ingen slik mekanisme. I C må vi basere oss på å generere en følge med tall og bruke disse som indekser.

Lister i Python Tutor

Bildet under viser hvordan ei liste illustreres i Python Tutor. Verdien til liste-variabelen partall vises som ei pil som peker på elementene i lista. Oppe til venstre i hvert element står de tilhørende indeksene. Vi ser at indekseringen starter på 0.

Visning av lister i Python Tutor

Oppgave 1:

Forsøk å forutse hva som vil skje i Python Tutor når du kjører koden under, linje for linje.

kvadrattall = []
for n in range(1, 5):
    kvadrattall.append(n**2)

Legg så koden under inn i Python Tutor, og undersøk om du har rett.

Se løsningsforslag

Liste-metoder

I artikkelen om metoder ser vi at strenger har tilknyttede metoder. For eksempel at koden

print("hipp hurra!".upper())

bruker metoden upper() til å gjøre om strengen "hipp hurra!" til store bokstaver.

Lister har også metoder knyttet til seg. En komplett oversikt finnes på referansesiden https://www.w3schools.com/python/python_ref_list.asp. Kommandoen dir(list) i Python vil også gi en oversikt.

Noen viktige metoder er:

append()

Legger til et element på slutten av ei liste. Som argument angir vi elementet vi vil legge til.

Eksempel 1:

Vi har lista demo, som vist under:

demo
7 -3 8 4 8

Så skriver vi 

demo.append(5)

Da blir et element med tallet 5 lagt til på slutten, og demo ser slik ut:

demo
7 -3 8 4 8 5

insert()

Setter inn et element foran et element med en gitt indeks. Som argumenter gir vi først indeksen, så elementet.

Eksempel 2:

Vi har lista demo, som vist under:

demo
7 -3 8 4 8

Så skriver vi 

demo.insert(2, 5)

Siden indekseringen starter på 0, er det tallet 8 som har indeks 2. Når vi setter inn 5, skyves 8, 4 og 8 mot høyre, og demo ser slik ut:

demo
7 -3 5 8 4 8

pop()

Fjerner et element med en gitt indeks i ei liste. Som argument gir vi indeksen.

Eksempel 3:

Vi har lista demo, som vist under:

demo
7 -3 8 4 8

Så skriver vi 

demo.pop(1)

Siden indekseringen starter på 0, er det −3 som har indeks 1 og skal fjernes, og demo ser slik ut:

demo
7 8 4 8

Metoden pop() returnerer elementet den fjerner fra lista. Det kan vi tilordne til en variabel.

Eksempel 4:

Vi har lista demo, som vist under:

demo
7 -3 8 4 8

Så skriver vi 

x = demo.pop(1)

Da blir tallet −3 fjernet fra lista og tilordnet variabelen x.

Skriver vi så

print(x)

får vi skrevet ut -3.

Dersom vi ikke gir noe argument til pop(), fjernes siste element i lista.

Eksempel 5:

Vi har lista demo, som vist under:

demo
7 -3 8 4 8

Så skriver vi 

demo.pop()

Det betyr at siste element, som er 8, skal fjernes, og demo ser slik ut:

demo
7 -3 8 4

remove()

Fjerner første forekomst av en gitt verdi i ei liste. Som argument gir vi verdien vi skal fjerne. Argumentet til remove() henviser altså til innholdet i et element, ikke indeksen til et element, slik insert() og pop() gjør.

Eksempel 6:

Vi har lista demo, som vist under:

demo
7 -3 8 4 8

Så skriver vi 

demo.remove(8)

Det betyr at første forekomst av 8 skal fjernes, og demo ser slik ut:

demo
7 -3 4 8

Skriver vi så

demo.remove(8)

på nytt, fjernes neste forekomst av 8, og demo ser slik ut:

demo
7 -3 4
 

Dersom vi angir en verdi som ikke finnes i lista, får vi en feilmelding.

extend()

Utvider ei liste med ei ny liste på slutten. Som argument gir vi den nye lista.

Eksempel 7:

Vi har lista demo, som vist under:

demo
7 -3 8 4 8

Så skriver vi 

demo.extend([2, 3, 6])

Da utvides demo med lista [2, 3, 6] på slutten, og ser slik ut:

demo
7 -3 8 4 8 2 3 6

Alternativt kan vi bruke operatoren +=.

Å skrive

demo += [2, 3, 6]

gir samme liste som

demo.extend([2, 3, 6])

index()

Returnerer indeksen til første forekomst av en verdi i ei liste. Som argument gir vi verdien vi skal finne.

Eksempel 8:

Vi har lista demo, som vist under:

demo
7 -3 8 4 8

Så skriver vi 

print(demo.index(8))

Da får vi skrevet ut 2 fordi første forekomst av 8 har indeks 2.

Dersom vi angir en verdi som ikke finnes i lista, får vi en feilmelding.

Oppgave 1:

Vi skal arbeide på lista demo, som ser slik ut:

demo
7 -3 8 4 8
 

Skriv kode som oppretter denne lista og deretter

        • Legger til 9 på slutten.
        • Setter inn −4 foran elementet med indeks 3.
        • Fjerner og skriver ut elementet med indeks 1.
        • Fjerner elementet med verdi 4.
        • Utvider lista med lista [6, 3, 5].

Skriv ut lista etter hver operasjon for å kontrollere at resultatet blir riktig.

Se løsningsforslag

clear()

Tømmer ei liste, det vil si at alle elementene fjernes.

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press

Opprette lister

I artikkelen om lister ser vi at vi kan opprette ei liste ved å ramse opp innholdet mellom klammeparenteser, for eksempel ved å skrive 

v2 = [3, 4, 5]

Det finnes imidlertid flere måter å opprette lister på.

Vil vi ha ei liste med flere like elementer, kan vi angi ett element mellom klammeparenteser etterfulgt av et multiplikasjonstegn og et tall som angir hvor mange elementer vi vil ha.

Eksempel 1:

Vi skal opprette ei liste som heter terning og inneholder 6 nuller. Vi skriver da

terning = [0] * 6

Vi kan også bruke range() som argument til funksjonen list() til å genere ei liste med en følge av tall. Vi bruker da ikke klammeparenteser, men funksjonen list() til å oppretter lista.

Eksempel 2:

Vi skal opprette ei liste som heter tall og inneholder tallene fra og med 0 til og med 9. Vi skriver da

tall = list(range(10))

Vi skal opprette ei liste som heter partall og inneholder partallene fra og med 2 til og med 10. Vi skriver da

partall = list(range(2, 12, 2))

Oppgave 1:

Skriv kode for å opprette følgende:

      • Ei liste som heter lottotrekning og inneholder tallene 2, 9, 10, 15, 16, 22 og 26.
      • Ei liste som heter basis og inneholder 10 tall som alle er lik 1.
      • Ei liste som heter hurra og inneholder 3 strenger som alle er "hipp".
      • Ei liste som heter lottotall og inneholder tallene fra og med 1 til og med 34.

Bruk print() etterpå for å sjekke at listene er blitt riktige.

Se løsningsforslag

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press

Lister

Datatyper som heltall (int), flyttall (float), streng (str) og boolsk (bool) har det til felles at de bare har én enkelt verdi. Her skal vi se på en datatype som kan ha mange verdier, nemlig liste (list).

Variabler med enkeltverdier kan vi tenke på som en boks som inneholder ett enkelt element. Skriver vi for eksempel

x = 3

kan vi tenke på x som en boks med ett element, som har verdien 3:

x
3

Lister kan vi tenke på som en boks med mange elementer. Dersom y er ei liste som inneholder fem elementer som alle er 0, kan vi tenke oss at det ser slik ut:

y
0 0 0 0 0

Vi kan opprette ei liste på samme måte som andre typer variabler, men i stedet for å angi en enkeltverdi, ramser vi opp alle verdiene til lista mellom klammeparenteser. Det er klammeparentesene som forteller Python at vi vil opprette ei liste.

Eksempel 1:

Vi oppretter fem variabler:

v1 = 3
v2 = [3, 4, 5]
v3 = []
v4 = [3]
v5 = ["en", "to", "tre"]

v1 er en variabel av type heltall. v2 er ei liste som inneholder heltallene 3, 4 og 5. v3 er ei tom liste, v4 er ei liste som inneholder heltallet 3, og v5 er i liste som inneholder strengene "en", "to" og "tre".

Legg merke til forskjellen på v1 og v4. v4 blir ei liste fordi vi bruker klammeparenteser i tilordningen, altså [3], mens v1 ikke blir ei liste fordi vi ikke bruker klammeparenteser.

For å referere til et enkeltelement i ei liste bruker vi en indeks, det vil si et tall som angir hvilket element i lista vi vil referere til. Indeksene starter på 0. Det første elementet har altså indeks 0, det andre indeks 1, og så videre. Det kan virke tungvint at vi ikke starter indekseringen på 1, men å indeksere fra 0 er vanlig i mange programmeringsspråk. Etter hvert som vi blir mer drevne med programmering, blir indekseringen en vane, og vi vil også oppdage at det egentlig er ganske smart å starte på 0. Men det er en opplagt feilkilde, spesielt for nybegynnere.

Indeksen skriver vi i klammeparentes bak variabelnavnet.

Eksempel 2:

Vi oppretter ei liste, y, med 5 elementer, som alle er 0:

y = [0, 0, 0, 0, 0]

y ser nå slik ut

y
0 0 0 0 0

Vil vi så sette elementet med indeks 2 til 7, skriver vi

y[2] = 7

Etter dette vil lista y se slik ut:

y
0 0 7 0 0

Vil vi så sette elementet med indeks 0 lik elementet med indeks 2 minus tallet 4, skriver vi:

 y[0] = y[2] - 4

Etter dette vil lista y se slik ut:

y
3 0 7 0 0

Vi kan bruke print() til å skrive ut både hele lister og enkeltelementer. Har vi for eksempel lista y, som på slutten av eksempel 2, og skriver

print(y[2])

skrives tallet 7 ut. Skriver vi

print(y)

skrives hele lista ut, slik: [3, 0, 7, 0, 0].

Oppgave 1:

Vi har lista demo, som ser slik ut:

demo
"a" "b" "c" "d" "e"
Avgjør hvordan lista vil se ut etter at vi har kjørt følgende kode i Python:

demo[1] = demo[2]
demo[3] = demo[4]

Bruk først penn og papir, og skriv så kode for å sjekke om du har rett.

Se løsningsforslag

Hvis vi prøver å referere til et element som ikke eksisterer, får vi en feilmelding.

Oppgave 2:

Vi har lista demo, med 5 elementer:

demo
7 -3 8 4 8
Så skriver vi

print(demo[5])

Vi får da feilmeldingen "IndexError: list index out of range". Hva kan det skyldes?

Se løsningsforslag

Lister kan inneholde elementer av alle datatyper, og samme liste kan inneholde elementer av forskjellig datatype. For eksempel inneholder lista miks under både heltall, flyttall, streng og boolsk.

miks
7 3.2 "hei" True

Det er imidlertid sjelden vi bruker lister med miks av datatyper.

Oppgave 3:

Vi oppretter variabelen diverse slik:

diverse = [3, "2", 1.0]

Avgjør hvilken datatype følgende da har:

        • diverse
        • diverse[0]
        • diverse[1]
        • diverse[2]

Tenk først gjennom problemet, og bruk så funksjonen type() til å avgjøre om du har rett. print(type(n)) vil skrive ut datatypen til variabelen n.

Se løsningsforslag

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press

I språk som C og JavaScript kalles lister for arrays. Et annet norsk ord for det samme er tabeller.

Normalfordelingstabell

Tabellen under viser G(z), det vil si P(Zz) i en standard normalfordeling, z ∈ [0,00,  3,99].

De to første sifrene til z finnes i kolonna til venstre, det tredje sifferet i raden øverst. Vil vi for eksempel finne G(1,24), går vi inn der raden med 1,2 krysser kolonna med 0,04, og leser av 0,8925.

For negative z benytter vi at G(−z) = 1 − G(z). Vil vi for eksempel finne G(−1,32), finner vi 1 − G(1,32) = 1 − 0,9066 = 0,0934.

Tabell over standard normalfordeling