Du har et program som skal holde styr på fem brukernavn, ti produktpriser eller hundre måleresultater. Å lage separate variabler for hver verdi fungerer i teorien, men i praksis blir det uhåndterlig allerede ved fem elementer. Lister i Python løser dette. En liste samler flere verdier under ett variabelnavn, og du kan hente ut, endre og organisere verdiene fritt.
Slik lager du en liste i Python
En liste lager du med firkantparenteser. Verdiene separeres med komma:
tall = [10, 11, 12, 13, 14, 15]
Du kan også lage en tom liste og fylle den senere. Begge disse gir samme resultat:
tom_liste = []
tom_liste_2 = list()
Lister i Python kan inneholde alle datatyper. Du kan blande int, float, strenger og til og med andre lister i samme liste. Det gir deg stor fleksibilitet, men i praksis fungerer koden best når du holder deg til én type per liste. Blander du typer, blir det raskt forvirrende å vite hva du henter ut på en gitt indeks.
Hente verdier med indeksering
Hvert element i en liste har en posisjon, kalt indeks. Første element har indeks 0, ikke 1. Dette forvirrer mange i starten, men det blir raskt naturlig:
tall = [10, 11, 12, 13, 14, 15]
tall[0] gir 10
tall[2] gir 12
tall[5] gir 15
Du kan også telle bakfra med negative indekser. tall[-1] gir alltid det siste elementet (15), tall[-2] gir det nest siste (14). Negativ indeksering er spesielt nyttig når du ikke vet hvor lang listen er, men trenger det siste elementet. Mange bruker dette i praksis for å hente siste loggmelding, siste brukeraktivitet eller siste element i en beregning.
Slicing: hent flere verdier samtidig
Trenger du en del av listen, bruker du slicing. Syntaksen er liste[start:stopp], der start er inkludert og stopp er ekskludert:
tall[0:3] gir [10, 11, 12]
tall[2:5] gir [12, 13, 14]
tall[:3] gir de tre første
tall[3:] gir alt fra indeks 3 og ut
En vanlig feil er å forvente at stopp-verdien er inkludert. Det er den ikke. tall[0:3] gir elementene på indeks 0, 1 og 2. Denne regelen gjelder overalt i Python der du oppgir et intervall. Du kan også bruke et tredje argument for steg: tall[0:6:2] gir annethvert element, altså [10, 12, 14].
Endre verdier i listen
Til forskjell fra noen andre datastrukturer er lister muterbare. Det betyr at du kan endre innholdet etter at listen er opprettet. Du bytter en verdi ved å tilordne direkte til en indeks:
tall[2] = 7 endrer 12 til 7
tall[5] = 23 endrer 15 til 23
Du kan også bytte flere verdier på én gang med slicing:
tall[0:3] = [1, 2, 3]
Dette erstatter de tre første elementene. Listen beholder samme lengde hvis du setter inn like mange verdier som du fjerner. Setter du inn flere eller færre, endres lengden tilsvarende.
Sjekke lengde og medlemskap
Funksjonen len() gir antall elementer i listen:
len(tall) gir 6
For å sjekke om en verdi finnes i listen, bruker du in-operatoren:
12 in tall gir True
99 in tall gir False
Denne kombinasjonen bruker du ofte med if-setninger. For eksempel: if "admin" in brukere: lar deg sjekke tilgang uten å lete manuelt gjennom listen.
Iterere gjennom en liste
Den vanligste måten å gå gjennom en liste på er med en for-løkke:
for element in tall:
print(element)
Dette printer hvert element i listen, fra det første til det siste. Du trenger ikke tenke på indekser i det hele tatt. Trenger du indeksen i tillegg til verdien, bruker du enumerate():
for i, element in enumerate(tall):
print(f"Indeks {i}: {element}")
En tredje metode er å bruke range(len(tall)) og hente verdier med indeksering, men denne er mer tungvint og sjelden nødvendig. Hold deg til for element in liste som standard. Det er den mest lesbare formen, og Python-fellesskapet foretrekker den i nesten alle situasjoner.
Typiske feil med lister
Den vanligste feilen er IndexError. Du får den når du prøver å hente en indeks som ikke finnes. En liste med 6 elementer har indekser fra 0 til 5, og tall[6] krasjer programmet. Bruk len() for å sjekke lengden hvis du er usikker.
En annen fallgruve er å tro at tilordning til en ny variabel kopierer listen. kopi = tall gir deg to variabler som peker på samme liste. Endrer du den ene, endres den andre. Vil du ha en ekte kopi, bruk tall.copy() eller tall[:]. Denne forskjellen mellom referanse og kopi er en av de vanligste kildene til bugs for Python-nybegynnere.
Neste steg
Når du behersker grunnleggende lister, er neste steg å lære de viktigste listemetodene som append(), sort() og pop(). Trenger du en kompakt måte å opprette lister på, har vi en egen artikkel om list comprehension. For en fullstendig oversikt over alt Python tilbyr for lister, se Pythons offisielle dokumentasjon.
Denne videoen er hentet fra kurset Python for nybegynnere på Utdannet.no. I det fulle kurset jobber du med lister i Python gjennom praktiske oppgaver, lærer avansert indeksering og slicing, og bygger programmer som håndterer samlinger av data.




