Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Lister og tabeller i Python

Denne siden er ikke ferdig!

Arrayer og tabeller

I tillegg til de vanlige datatypene vi allerede har snakket om har Pyton også mulighet for å huske flere verdier en og samme variabeltype. Python har innebygget 3 forskjellige typer for dette, lister, tupler og dictionaries. Vi skal her kun se på den første typen: lister!

# Deklarasjon av liste uten innhold
tomListe = []

# liste med floats
listeDesimaltall = [3.2, 4.2, -8.0, 1.6]
#liste med forskjellige datatyper
listeMix = ["Ole", 101, True, -4.89]

print(listeDesimaltall)
print(listeMix)
[3.2, 4.2, -8.0, 1.6]
['Ole', 101, True, -4.89]

Som dere ser av eksemplet kan en liste bestå av ingen, en eller flere elementer. Siden Python ikke er kresent på datatyper så kan en liste bestå av hvilken som helst av disse og til og med forskjellige datatyper i samme liste. Dette er ikke vanlig i andre programmeringsspråk. For å skrive ut ett element fra listen brukes skrivemåten minListe[posisjon]. Legg merke til at referansen til første element starter på 0 og ikke 1. Prøv å legge til disse to linjene nederst i programmet:

print(listeDesimaltall[1])
print(listeMix[0])

Det finnes mange funksjoner som hører til datatypen lister, og vi skal ikke gå igjennom alle sammen her. Men som eksempler på nyttige funksjoner skal vi se på hvordan man kan legge til og fjerne elementer, samt sortere lister. Se eksempelet under:

minListe = ["Ole", "Thomas", "Kari", "Ali", "Miriam", "Martine", "Jonas", "Vilde"]
print(minListe)

# Legger til element på slutten av listen
minListe.append("Hermann")
print(minListe)

# Fjerner et objekt fra listen
minListe.remove("Kari")
print(minListe)

# Fjerner element fra listen basert på ideks, og sparer i en variabel (popping)
navn = minListe.pop(1)
print(navn)
print(minListe)

# Sorterer listen alfabetisk
minListe.sort()
print(minListe)
['Ole', 'Thomas', 'Kari', 'Ali', 'Miriam', 'Martine', 'Jonas', 'Vilde']
['Ole', 'Thomas', 'Kari', 'Ali', 'Miriam', 'Martine', 'Jonas', 'Vilde', 'Hermann']
['Ole', 'Thomas', 'Ali', 'Miriam', 'Martine', 'Jonas', 'Vilde', 'Hermann']
Thomas
['Ole', 'Ali', 'Miriam', 'Martine', 'Jonas', 'Vilde', 'Hermann']
['Ali', 'Hermann', 'Jonas', 'Martine', 'Miriam', 'Ole', 'Vilde']
  • Append legger til et element på slutten av listen.

  • Remove trekker fra bestemte objekter i lista. Hvis flere elementer er likeså fjernes alle.

  • Pop henter ut et element fra listen og returnerer elementet slik at det kan for eksempel skrives ut eller legges i en annen variabel. Dersom pop kalles uten indeks (for eksempel: minListe.pop() ), vil den hente ut det siste elementet i listen.

Iterasjon av lister

Å iterere en liste betyr å «bla igjennom lista», gjerne i en for-sløyfe. I mange kodespråk gjøres dette på den første måten som vist i eksempelet over ved at man lager en teller (index) som teller fra 0 og til antall elementer i listen, og henter ut elementene ved hjelp av denne indeksen.

En mer snedig måte å gjøre dette på er vist i den nederste metoden: Her skjønner pyton at den skal gå igjennom listen, men i stedet for å bruke en tallindeks, henter python automatisk hvert element in i sløyfevariablen direkte.

minListe = ["Ole", "Thomas", "Kari", "Ali", "Miriam", "Martine", "Jonas", "Vilde"]

# Iterasjon med index, len() gir lengden på lista
for index in range(len(minListe)):
    print(minListe[index])

# for mellomrom i utskrift
print("")

# Iterasjon med elementmetode (snedig)
for element in minListe:
    print(element)
Ole
Thomas
Kari
Ali
Miriam
Martine
Jonas
Vilde

Ole
Thomas
Kari
Ali
Miriam
Martine
Jonas
Vilde

Iterasjon av Arrays

Iterasjon av arrays er helt likt som for lister. Følgende eksempel itererer et array som heter x, og regner riemannsummen under funksjonsverdien. Verdien til elementene hentes ut med x[i], der i er elementnummeret som telles opp i for-sløyfa:

import numpy as np

minArray = np.linspace(-3, 3, 7)
for i in range(minArray.size):
    print(minArray[i])
-3.0
-2.0
-1.0
0.0
1.0
2.0
3.0

Det går også an å bruke «elementmetoden» på arrays.

import numpy as np

minArray = np.linspace(-3, 3, 7)
for element in minArray:
    print(element)
-3.0
-2.0
-1.0
0.0
1.0
2.0
3.0

Biblioteker

Python er et programmeringsspråk under utvikling, selv om struktur og basiskommandoer er uendret kan det hende at det kommer nye konvensjoner på hvordan ting skal gjøres. Derfor kan det hende at man i noen kodeeksempler ser at ting blir gjort på én måte, mens i andre eksempler en annen. I skrivende stund er Python i versjon 3, som kom i 2008. Likevel er det vanlig å finne eksempler som er skrevet i versjon 2.7. Disse eksemplene kjører fint i Python 3, men det hender at du vil få en advarsel under kjøring.

“Star imports”

Det er spesielt en ting man skal legge merke til. Når det gjelder importering av biblioteker vil man nå, i de fleste utviklingsmiljøer (f. eks Spyder) få advarsel hvis man prøver å importere hele biblioteker uten å gi de et lokalt navn. Se eksempelet under:

from math import *
from numpy import *

svar = sin(2*pi)
print(svar)
-2.4492935982947064e-16

Her er bibliotekene math og numpy importert på den gamle måten med alle sine respektive funksjoner. Det betyr at hvis disse bibliotekene inneholder en funksjon eller en konstant med samme navn, så vet ikke Python hvilken som skal kjøres. Og begge disse matematikkbibliotekene inneholder hver sin utgave av funksjonen sin() og pi. I den 3. instruksen her, svar = sin(2*pi), velger sannsynligvis Python fra det biblioteket som ble importert først. Akkurat her har det ikke noe å si for resultatet, men det er ikke alltid sikkert.

Import-metoden

En mye bedre måte å importere biblioteker på er å bruke denne metoden:

import math
import numpy

svar = math.sin(2*numpy.pi)
print(svar)
-2.4492935982947064e-16

Her blir bibliotekenes funksjoner importer under sitt eget navn. Når man da skal kalle funksjoner eller bruke konstanter fra bibliotekene så angir man dette med biblioteksnavnet som prefiks slik: biblioteksnavn.funksjonsnavn() eller konstantnavn. På denne måten kan vi importere biblioteker som inneholder funksjoner med samme navn uten at det blir problemer av det. I eksempelet over brukes sinusfunksjonen fra math, og konstanten pi fra numpy

Alias-metoden

Man kan også importere biblioteker og gi de et lokalt alias. Denne metoden er ofte brukt for å lage forkortelser, eller hvis man skal importere et underbibliotek

import math as m
import numpy as np

svar = np.sin(2*m.pi)
print(svar)
-2.4492935982947064e-16

Her er bibliotekene math og numpy importert slik at de får de lokale aliasene m og np. Man kan selv velge hvilket alias som skal brukes lokalt, men det er lurt å velge et navn slik at man husker hva det refererer til. Hvis man vil bruke sin() fra numpy, så skriver man np.sin(). I eksempelet over henter vi sin() fra numpy og konstanten pi fra math. (Motsatt av forrige eksempel!)

Importere del av et bibliotek

Noen ganger vil man ikke importere hele biblioteker, da kan man importere bare den biten man ønsker seg. I eksempelet under vil vi importere en plottefunksjon fra mathplotlib, som er et ganske omfattende bibliotek.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-4,4,100)
y = x**2-4

plt.plot(x,y)
plt.show()
<Figure size 640x480 with 1 Axes>

Koden over importerer kun underbiblioteket pyplot og vi gir det det lokale aliaset plt, som nå refererer direkte til dette.