Lister#

Læringsutbytte

Etter å ha arbeidet med dette temaet, skal du kunne:

  1. opprette lister

  2. gjør ulike operasjoner på lister (NB: Du trenger ikke pugge operasjonene!)

  3. trekke ut informasjon av lister ved hjelp av indekser

Når vi trenger å spare på flere verdier i samme variabel, kan vi benytte lister. Lister er samlinger med tall, strenger eller annet. Lister i Python markeres ved å sette objektene i klammeparentes:

dyr = ["gaupe", "torndjevel", "bjørnedyr", "blobfisk", "sjøkneler"]
tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Lister defineres altså gjennom klammeparentesen, og elementene i lista skilles med komma. Vi kan også gjøre ulike listeoperasjoner, som å legge til og slette elementer. La oss bruke lista med dyr som eksempel:

dyr = []                   		                   # Lager ei tom liste
aper = ["stumpneseape", "spøkelsesape", "neseape"] # Lager ei liste
dyr.append("komodovaran")                          # Legger til et element til dyrelista
dyr.append("glaucus atlanticus")	               # Legger til et dyr til
dyr.extend(aper)                                   # Legger hele apelista inn i dyrelista
dyr.remove("neseape")                              # Sletter elementet "neseape"
dyr.pop(1)                        	               # Sletter element nr. 1 i lista
dyr.reverse()                                      # Reverserer lista

print(dyr)

Underveisoppgave

Hva slags output gir programmet ovenfor? Prøv å forstå hva som skjer uten datamaskin, og test så programmet for å se om du hadde rett.

Plassnummeret til et element i lista kaller vi indeks. Indeksen angis ofte i klammeparentes. Vi kan også sortere lista, finne lengden av lista og finne de elementene vi ønsker.

Underveisoppgave

Kjør programmet nedenfor og forklar hva som skjer.

Men vent nå litt! Vi ser at lista inneholder ni elementer – hvorfor står det at nummer 94 står på plass nr. 7 når vi ser at det er nest sist i lista (altså på plass nr. 8)? Det er fordi indekser i Python, og mange andre språk, starter på 0. Det vil si at indeksen til det første totallet er 0, og til det siste elementet (102) er 8. Ei liste med \(n\) elementer har elementer med indekser fra \(0\) til \(n - 1\).

Vi kan finne og bruke ulike elementer i ei liste ved å bruke indeksene til elementet. Vi trenger med andre ord ikke behandle hele lista hver gang vi trenger noen elementer derfra:

liste = [1.3, 5.6, -2.0, 3.5, -3.5]
A = liste[2]		# A får verdien til element 2 i lista 
B = liste[1:3]		# B blir ei liste med element 1 til og med 2
C = liste[2:]		# C blir ei liste med element 2 og sluttelementet
D = liste[:2]		# D blir ei liste med element 0 til og med 1 (til 2)
E = liste[-1]       # E får verdien til det siste elementet i lista
F = liste[-2]       # F får verdien til det nest siste elementet i lista

Underveisoppgave

Hvilken verdi får variablene A, B, C, D, E og F ovenfor?

Det er noen andre operasjoner som en kan gjøre med lister. I tillegg er det ofte flere måter å gjøre ting på. La oss lage et par tallister og gjøre noen operasjoner på disse.

Underveisoppgave

Prøv ut programmet ovenfor og forklar hva som skjer. Endre gjerne på noen av operasjonene og se hva utfallet blir. Utvid også programmet slik at det skriver ut det siste elementet i lista c. Skriv også ut alle elementer bortsett fra det første.

Siden vi sletter element nr. 2 (som er tallet 3), får vi beskjed om at 3 ikke er i c lenger (“False”). Legg også merke til at når vi legger sammen listene, er det omtrent det samme som å bruke kommandoen extend.

Oppgaver#

Oppgave 2.1

Forklar for hvert program hvorfor det gir følgende output:

a = [1,2,3,4,5,6,7,8,9]
b = a[1] + a[5]
print(b)

Output: 8

liste = [1,2,3,4,5]
liste1 = liste[:3]
liste.pop(1)
liste1.reverse()
del liste1[2]
liste += liste1
print(liste)

Output: [1, 3, 4, 5, 3, 2]

Oppgave 2.2

Du får gitt ei liste som ser slik ut:

['dette','er','en','ganske','lang','liste','med','ikke', 'så','viktig','innhold']

Lag ei ny liste der programmet henter relevante elementer fra den gitte lista. Når du skriver ut den nye lista, skal du få: [‘dette’,’er’,’en’,’liste’,’med’,’viktig’,’innhold’]

Oppgave 2.3

Skriv om linja som endrer på lista a slik at i1 og i2 har forskjellige verdier.

a = [1,5,2,5,2,4,4,2]
i1 = a.index(2)
print("i1 =",i1)
del a[7]
i2 = a.index(2)
print("i2 =",i2)

Video#

Se videoen nedenfor for en innføring eller repetisjon til lister.