Lister i Python

Lister er en datatype i Python, og er "beholdere" som inneholder elementer i en bestemt rekkefølge. 

Oppretting av lister 

Ei liste opprettes ved at man omslutter elementer, skilt med komma, med klammeparentes []. For eksempel, hvis man vil skrive ei liste med tallene 1, 2 og 3 skriver man:

Lister kan blant annet inneholde heltall, desimaltall, ord og andre lister. Hvis du har ord eller setninger i en liste kan du velge mellom å sette dem i enten doble eller enkle hermetegn - det har ingenting å si, så lenge det er samme type hermetegn først og sist.

Vi kan bruke ei for-løkke til å bevege oss gjennom alle elementene i ei liste:

Løkkevariabelen, som vi her har kalt dyr, vil få hvert av elementene i lista kattedyr etter tur, som skrives ut til skjermen.

Legge til elementer i lister

Det er mange innebygde funksjoner knytta til lister. For å bruke dem skriver man navnet på lista etterfulgt av et punktum, og deretter navnet på funksjonen man ønsker å bruke. 

Som et eksempel skal vi se på hvordan man legger til et element i ei liste ved hjelp av funksjonen .append(). La oss legge til tallet 4 i lista tall_liste:

Merk at med .append()-funksjonen skriver vi:

<listenavn>.append(<Det som skal legges til til slutt>)

Vi kan også legge til elementer i ei liste i løkker. Her er et eksempel der vi regner ut de ti første kvadrattallene, og lagrer dem i lista kvadrattall:

Oppgave: Yatzykast

Skriv et program som kaster fem terninger og lagrer dem i ei liste, og også regner ut summen av terningene med funksjonen sum().

Løsningsforslag

Trekke elementer fra lister

Python-biblioteket Random har en funksjon som lar oss trekke et tilfeldig element fra ei liste, nemlig funksjonen choice():

Tidligere har vi laget "jukseterninger" ved hjelp av tilfeldige tall og vilkår:

Vi kan også bruke lister og choice-funksjonen til å lage vektede terninger:

Oppgave: Par i seks

Simuler terningkast med vektet terning for å finne sannsynligheten for å få par i seks med to slike terninger

Startkode

Løsningsforslag

Listeindeksering

For å skrive ut et element med en bestemt indeks skriver man navnet på liste-objektet, etterfulgt av en klammerparentes [] med indeksnummeret inni. Det som er litt forvirrende i Python, er at det første elementet har indeks 0, det andre har indeks 1, og så videre. Indeksen til det siste elementet blir derfor én mindre enn antall elementer i lista. 

For eksempel, hvis du vil hente ut det tredje elementet i ei liste som heter elementer, skriver du elementer[2].

I den siste linja brukte vi indeksnummer -1, som printer ut det siste elementet i ei liste. Dette er nyttig hvis man ikke vet hvor mange elementer det er i lista, men skal ha det siste. Det nest siste elementet har indeks -2, det tredje siste har -3 og så videre.

Oppgave: Fibonacci

Fibonaccitallene er den berømte tallrekka

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

der de to første tallene er 0 og 1, og hvert påfølgende tall er summen av de to foregående. Tallrekka dukker overraskende ofte opp i både matematikk og biologi.


Bruk ei for-løkke til å lagre de 30 første Fibonacci-tallene i ei liste. 

Hint

Her kan du få bruk for liste-funksjonen .append(), og at man indeksere i lister baklengs (bakerste element har indeks -1, nest bakerste har -2 osv.)

Startkode

Løsningsforslag