Løsningsforslag, mer om lister og dictionaries

Negative indekser i lister

Oppgave 1:

Vi oppretter ei liste som heter kvadrat:

kvadrat = [1, 4, 9, 16, 25, 36]

Så skal vi avgjøre hvilke tall kvadrat[-2] og kvadrat[-6] da refererer til.

Negative indekser regnes fra −1 fra høyre mot venstre, så kvadrat[-2] refererer til 25 og kvadrat[-6] til 1.

Tilbake til oppgaven

Deler av lister

Oppgave 1:

Vi oppretter ei liste som heter kvadrat:

kvadrat = [1, 4, 9, 16, 25, 36]

Så skal vi avgjøre hva kvadrat[1:3], kvadrat[:3], kvadrat[2:] og kvadrat[:5:2] da refererer til.

[a:b:c] gir ei liste som består av elementene med indeks fra og med a inntil b i skritt på c. Utelater vi a, betyr det at vi skal starte på første element i lista. Utelater vi b, betyr det at vi skal slutte på siste element i lista. Utelater vi c, betyr det at vi skal bruke 1 som skrittverdi.

kvadrat[1:3] refererer til ei liste med elementene med indekser fra og med 1 inntil 3 i kvadrat, det vil si [4, 9].

kvadrat[:3] refererer til ei liste med elementene fra begynnelsen inntil indeks 3 i kvadrat, det vil si [1, 4, 9].

kvadrat[2:] refererer til ei liste med elementene fra og med indeks 2 til og med siste element i kvadrat, det vil si [9, 16, 25, 36].

kvadrat[:5:2] refererer til ei liste med elementene fra og med begynnelsen inntil indeks 5 i skritt på 2 i kvadrat, det vil si [1, 9, 25].

Tilbake til oppgaven

Kopiere lister

Oppgave 1:

Vi har funksjonen kvadrer(), som gjør endringer i lista siffer vi sender inn som argument:

kvadrer(siffer)

Så skal vi forklare hvordan vi kan skrive om oppkallet av funksjonen slik at siffer ikke endres.

Vi må sørge for at en egen kopi av siffer overføres til kvadrer() ved å skrive

kvadrer(siffer.copy())

eller

kvadrer(siffer[:])

Bruker vi Python Tutor, ser vi ser vi at siffer i hovedprogrammet og liste i kvadrer() er forskjellige lister:

Illustrasjon av hovedprogram og funksjon som refererer til lister som er forskjellige objekter

Tilbake til oppgaven

Sortere lister

Oppgave 1:

Vi skal skrive Python-kode som oppretter lista kaos = [6, −3, 0, 5, 2, 8] og deretter sorterer lista synkende uten at vi angir reverse = True i sort().

Dette kan vi gjøre ved først å sortere og deretter snu rekkefølgen i lista:

kaos = [6, -3, 0, 5, 2, 8]
kaos.sort()
kaos.reverse()

Tilbake til oppgaven

Lister som inneholder lister

Oppgave 1:

Vi oppretter lista grader, som vist under.

grader_uke_1 = [12, 10, 14, 7, 8, 11, 10]
grader_uke_2 = [10, 7, 9, 6, 6, 8, 15]
grader_uke_3 = [10, 5, 3, 6, 4, 3, 2]
grader = [grader_uke_1, grader_uke_2, grader_uke_3]

Så skal vi avgjøre hva som blir skrevet ut hvis vi kjører følgende kode:

print(grader[1][2])
print(grader[2][1])
print(grader[0])

grader[1][2] betyr at vi skal bruke element nummer 1 i grader, altså grader_uke_2, og element nummer 2 i denne lista, så vi får skrevet ut 9.

grader[2][1] betyr at vi skal bruke element nummer 2 i grader, altså grader_uke_3, og element nummer 1 i denne lista, så vi får skrevet ut 5.

grader[0] har bare én indeks, så dette er hele element nummer 0, som er lista grader_uke_1. Så vi får skrevet ut [12, 10, 14, 7, 8, 11, 10].

Tilbake til oppgaven