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:
| 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:
| 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
| 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:
| 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:
| 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].
Vi har lista demo, som ser slik ut:
"a" |
"b" |
"c" |
"d" |
"e" |
demo[1] = demo[2] demo[3] = demo[4]
Bruk først penn og papir, og skriv så kode for å sjekke om du har rett.
Hvis vi prøver å referere til et element som ikke eksisterer, får vi en feilmelding.
Vi har lista demo, med 5 elementer:
| 7 | -3 | 8 | 4 | 8 |
print(demo[5])
Vi får da feilmeldingen "IndexError: list index out of range". Hva kan det skyldes?
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.
| 7 | 3.2 | "hei" |
True |
Det er imidlertid sjelden vi bruker lister med miks av datatyper.
Vi oppretter variabelen diverse slik:
diverse = [3, "2", 1.0]
Avgjør hvilken datatype følgende da har:
-
-
-
diversediverse[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.
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.