Lister i Python
Indhold på denne side
Hvad er en liste?
I Python er det muligt at skabe lister ved hjælp af datatypen list. En liste er en række af værdier opstillet i en bestemt rækkefølge. Hver værdi i en liste kan refereres til som en genstand. Disse genstande kan ændres på mange forskellige måder; de kan tilføjes, fjernes, erstattes, sorteres, ændre rækkefølge og kombineres med genstande i andre lister, blandt mange andre ting.
Nedenstående kodestykke er et eksempel på hvordan en liste defineres:
Min_liste = ['Æble', 12, 'Banan', 13.5]
Denne liste gemmes inde i variablen Min_liste. Listens genstande står mellem to firkantede parenteser ( [ ] ) og er adskilt med et komma. Bemærk at listen godt kan indeholde flere forskellige slags datatyper, inklusiv andre lister.
Hvis man ville udprinte listen, så skal man sætte listens navn ind i en print()-funktion:
print(Min_liste)
Følgende vil så blive indlæst:
['Æble', 12, 'Banan', 13.5]
Indlæs en listes længde med len()
len()-funktionen kan benyttes til at tælle antallet af genstande i en liste:
Min_liste = ['Æble', 12, 'Banan', 13.5]
Længde = len(Min_liste)
print(Længde)
Tallet 4 vil blive indlæst, da der er fire genstande i listen:
4
Loop igennem en liste med for
for-erklæringen kan benyttes til at loope igennem genstandene en liste. På den måde kan man udprinte hvert enkel genstand på en selvstændig linje:
Min_liste = ['Æble', 12, 'Banan', 13.5]
for x in Min_liste:
print(x)
Følgende vil blive indlæst:
Æble
12
Banan
13.5
Tjek om en liste indeholder en værdi
Med erklæringerne in og not in kan man tjekke om en liste indeholder, eller ikke indeholder, en bestemt værdi. Programmet vil indlæse en boolsk værdi for at indikere om udtrykket er rigtigt eller forkert:
Min_liste = ['Æble', 12, 'Banan', 13.5]
print('Banan' in Min_liste)
print('Pære' in Min_liste)
print(30 not in Min_liste)
print('Æble' not in Min_liste)
I ovenstående kodestykke tjekkes der om værdierne ‘Banan’ og ‘Pære’ er i Min_liste samt om 30 og ‘Æble’ ikke er i Min_liste. Alle udtryk evaluerer til True, undtagen den anden, da der ikke er værdien ‘Pære’ i Min_liste:
True
False
True
True
Listens indeks
Alle genstandene i en liste har hvert et unikt indeks, som kan identificere genstanden. Indekset består af navnet på listen, efterfulgt af firkantede parenteser som indeholder et tal der indikerer hvor i listen genstanden er.
Farver = ['Rød', 'Blå', 'Gul', 'Grøn']
Ovenstående liste, Farver, indeholder fire genstande. Den første genstand, ‘Rød’, vil have indekset Farver[0], den anden genstand, ‘Blå’, vil have indekset Farver[1], Den tredje genstand, ‘Gul’, vil have indekset Farver[2] og den sidste genstand, ‘Grøn’, vil have indekset Farver[3]. Genstandene hedder hhv. indeks 0, indeks 1, indeks 2 og indeks 3. Hvis der var flere genstande i listen så ville den fortsætte på samme måde. Bemærk at indekset starter med 0, så derfor vil antallet af genstande i listen være én mere end den sidste genstands indekstal.
Det er muligt at udprinte en bestemt genstand i listen ved at udprinte genstandens indeks:
print(Farver[2])
Ovenstående kodestykke vil udprinte indeks 2 i listen Farver:
Gul
Negative indekstal
Man kan benytte negative indekstal til at få fat i genstande i den anden ende af listen. Det vil sige, at indekstallet for den sidste genstand i listen er indeks -1, den næstsidste genstand i listen er indeks -2 osv.
Farver = ['Rød', 'Blå', 'Gul', 'Grøn'] print(Farver[-1])
Ovenstående kodestykke vil udprinte den sidste genstand i listen:
Grøn
Variabler med flere lister
Hvis nogle af listens genstande er endnu en liste, og man gerne vil indlæse dens genstand så skal man skrive flere end et indekstal:
Min_liste = [['Rød', 'Blå', 'Gul', 'Grøn'], ['Hund', 'Kat', 'Hest', 'Egern'], [10, 20, 30]]
Min_liste indeholder tre lister, som kan indlæses med Min_liste[0], Min_liste[1] og Min_liste[2]. Men hvis man gerne vil have fat i en bestemt genstand som er inde i en af de tre lister, så skal man skrive to indekstal: Det første skal være for hvilken liste man vil have og den anden skal være for hvilken genstand inde i listen man vil have:
print(Min_liste[1][3])
I ovenstående kodestykke hentes indeks 1 fra Min_liste. Inde i listen for indeks 1 hentes genstanden for indeks 3:
Egern
index()
For at finde indekstallet for en bestemt genstand i en liste, så kan man benytte funktionen index() ved først at skrive listens navn, efterfulgt af et punktum, efterfulgt af index()-funktionen, og så skriver man genstandens værdi imellem parenteserne:
Farver = ['Rød', 'Blå', 'Gul', 'Grøn'] Indekstal = Farver.index('Blå') print(Indekstal)
I ovenstående kodefelt lægges indekstallet for genstanden ‘Blå’ i variablen Indekstal. Variablen bliver herefter udprintet:
1
Indlæs udsnit af liste
Man kan indlæse et udsnit af listen ved at angive listens navn efterfulgt af to firkantede parenteser. Inde i parenteserne skal der står to tal adskilt med et kolon (:). Det første tal er det indekstal hvor udsnittet skal begynde og det andet tal er det indekstal hvor udsnittet skal ende. Udsnittet vil kun gå op til, men ikke inkludere, det indekstal som udsnittet ender med:
Farver = ['Rød', 'Blå', 'Gul', 'Grøn', 'Lilla', 'Brun'] print(Farver[2:4])
Ovenstående kodestykke vil udprinte et udsnit af Farver fra indeks 2 og op til indeks 4:
['Gul', 'Grøn']
Man kan også udelade enten det første eller det andet tal på en af kolonnens sider. Hvis man udelader det første tal, så vil udsnittet begyndte fra indeks 0. Hvis man udelader det andet tal, så vil udsnittet ende i listens sidste indeks:
Farver = ['Rød', 'Blå', 'Gul', 'Grøn', 'Lilla', 'Brun'] print(Farver[3:]) print(Farver[:4])
I ovenstående kode udprintes to udsnit af den samme liste. Det første udsnit begynder i indeks 3 og ender i listens sidste indeks. Det andet udsnit begynder i indeks 0 og ender i indeks 4:
['Grøn', 'Lilla', 'Brun']
['Rød', 'Blå', 'Gul', 'Grøn']
Tilføj værdier til liste
Der er to funktioner som kan benyttes til at tilføje genstande til en liste. De hedder append() og insert().
append()
Med append() kan man tilføje en genstand til slutningen af listen:
Farver = ['Rød', 'Blå', 'Gul'] Farver.append('Grøn')
I ovenstående kodestykke angives navnet på listen, efterfulgt af et punktum, efterfulgt af funktionen. Den værdi som skal tilføjes er skrevet mellem parenteserne. Hvis man udprinter Farver, så vil listen nu se sådan her ud:
['Rød', 'Blå', 'Gul', 'Grøn']
insert()
Med insert() kan man tilføje en genstand til et bestemt indekstal:
Farver = ['Rød', 'Blå', 'Gul'] Farver.insert(1, 'Grøn')
I ovenstående kodestykke angives navnet på listen, efterfulgt af et punktum, efterfulgt af funktionen. Mellem parenteserne er der angivet to værdier. Den første er det tal som angiver hvilket indekstal som den nye genstand skal have; den anden er selve værdien af genstanden. Hvis man udprinter Farver, så vil listen nu se sådan her ud:
['Rød', 'Grøn', 'Blå', 'Gul']
Den nye genstand ‘Grøn’ har fået indeks 1.
Slet værdier fra liste
Der er flere erklæringer og funktioner som kan benyttes til at slette værdier i en liste samt hele listen. De vil blive gennemgået her.
remove()
Med remove() kan man slette en bestemt værdi i listen ved at angive værdiens navn:
Farver = ['Rød', 'Blå', 'Gul'] Farver.remove('Blå')
I ovenstående kodestykke angives navnet på listen, efterfulgt af et punktum, efterfulgt af funktionen. Imellem parenteserne er der angivet den værdi som skal slettes. Hvis man udprinter Farver, så vil listen nu se sådan her ud:
['Rød', 'Gul']
del
Med del kan man slette en bestemt værdi i listen ved at angive værdiens indeks:
Farver = ['Rød', 'Blå', 'Gul'] del Farver[0]
I ovenstående kodestykke angives erklæringen, efterfulgt at indekset. Hvis man udprinter Farver, så vil listen nu se sådan her ud:
['Blå', 'Gul']
pop()
Med pop() kan man slette en bestemt værdi i listen ved at angive værdiens indekstal. Hvis der ikke er angivet noget indekstal så vil funktionen slette den sidste værdi i listen:
Farver = ['Rød', 'Blå', 'Gul'] Farver.pop(1)
I ovenstående kodestykke angives navnet på listen, efterfulgt af et punktum, efterfulgt af funktionen. I funktionens parameter angives indekstallet som skal slettes. Hvis man udprinter Farver, så vil listen nu se sådan her ud:
['Rød', 'Gul']
clear()
Med clear() kan man slette alle værdierne i en liste, så den vil blive tom:
Farver = ['Rød', 'Blå', 'Gul'] Farver.clear()
I ovenstående kodestykke angives navnet på listen, efterfulgt af et punktum, efterfulgt af funktionen. Hvis man udprinter Farver, så vil listen nu se sådan her ud:
[]
Bemærk at listen ikke er blevet slettet. Den er kun blevet tømt for indhold.
Erstat værdier i liste
For at erstatte en værdi i en list, så skal man referere til indekset og sætte det lig med den nye værdi som skal erstatte den gamle:
Farver = ['Rød', 'Blå', 'Gul'] Farver[2] = 'Orange'
Det vil resultere i at hvis man udprinter listen, så vil den se sådan her ud:
['Rød', 'Blå', 'Orange']
Her er indeks 2, som tidligere var ‘Gul’, blevet erstattet med ‘Orange’.
Sorter liste
Man kan sortere en liste med funktionen sort(). Hvis listen består af talværdier, så vil funktionen sortere fra laveste tal til højeste. Hvis listen består af tekstværdi, så vil funktionen sortere fra A til Å. Bemærk at hvis listen består af en blanding af tal- og tekstværdier, så vil man få en fejlmeddelelse hvis man prøver at sortere den.
Farver = ['Rød', 'Blå', 'Gul', 'Grøn'] Farver.sort()
I ovenstående kodestykke angives navnet på listen, efterfulgt af et punktum, efterfulgt af funktionen. Hvis man udprinter Farver, så vil listen være sorteret alfabetisk:
['Blå', 'Grøn', 'Gul', 'Rød']
Imellem parenteserne kan der tilføjes parameteren reverse, som man kan sætte til at være lig med True. Det vil gøre at listen bliver sorteret i modsat rækkefølge:
Farver = ['Rød', 'Blå', 'Gul', 'Grøn'] Farver.sort(reverse = True)
Hvis man udprinter Farver, så vil listen være sorteret omvendt alfabetisk, altså fra Å til A:
['Rød', 'Gul', 'Grøn', 'Blå']
Omvend liste
med reverse() kan man omvende listens værdier, så den sidste værdi vil være den først, den næstsidste værdi vil være den anden osv.
Farver = ['Rød', 'Blå', 'Gul', 'Grøn'] Farver.reverse()
I ovenstående kodestykke angives navnet på listen, efterfulgt af et punktum, efterfulgt af funktionen. Hvis man udprinter Farver, så vil listen være omvendt:
['Grøn', 'Gul', 'Blå', 'Rød']
Kombiner lister
Man kan let kombinere to eller flere lister ved at sætte et additionstegn (+) imellem dem:
Farver1 = ['Rød', 'Blå', 'Gul', 'Grøn'] Farver2 = ['Lilla', 'Brun', 'Orange', 'Lyserød'] Farver3 = Farver1 + Farver2
I ovenstående kodestykke er Farver1 lagt sammen med Farver2 i en variabel som hedder Farver3.
Hvis man udprinter Farver3, så vil man få følgende liste:
['Rød', 'Blå', 'Gul', 'Grøn', 'Lilla', 'Brun', 'Orange', 'Lyserød']