Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

Lister 2 : å telle elementer

For å telle elementer i lister er det to subrutiner som er fine å kunne. Den første er metoden .count(), og den andre er funksjonen len(). Count fungerer på lister veldig likt som på strenger, men den går gjennom elementene i lista og sjekker dem.

Eksempel:

liste = [1,2,1,4,5,5,1,2,2,2]
print(liste.count(2))

Utskrift:

4

Merk at den ikke sjekker innad i elementene i lista. Se på antall tilfeller av "ei" i lista nedenfor:

liste2 = ["eie", "meie", "ei", "einebær", "soleie"]
print(liste2.count("ei"))

Utskrift:

1

len() sjekker bare hvor mange elementer det er totalt i ei liste. Merk også hvordan syntaksen til len() er annerledes fra .count().

liste3 = [1,2,3,4,5,6,7,8,9]
liste4 = ["ristet brød med avokado", "sviskegrøt med fløte"]

print(len(liste3))
print(len(liste4))
9
2

Oppgaver

a) Bruk len() til å finne ut lengden til listene under, men tenk over hvor lange de er ved å se på dem først. Skriv ut svaret til terminalen.

liste1 = ["o","s","t","e","p","o","p"]
liste2 = [9.5,2.2,4.5,3.1,23.5]
liste3 = [[1,2,3,4,5,8],[11,13,15,18]]

b) Bruk .split() og len() til å finne ut hvor mange ord det er i verset under fra Trymskvida. Her kan det lønne seg å skrive ut lista du får, for å sjekke om du deler opp strengen riktig.

tekst = """Vreid var Vingtor
då han vakna
og hamaren sin
han munde sakne .
Skjegg han riste,
hedna han skok ;
tok son åt Jord
um seg å trivle ."""

c) Bruk .split() og .count() på teksten under til å telle følgende. Teksten er to vers fra Grottesang fra den Yngre Edda. Skriv ut til terminalen.

c1) Hvor mange ganger forekommer ordet "ei" i teksten?
c2) Hvor mange ganger forekommer kommaet?
c3) Hvor mange ganger forekommer ordet "til"?
c4) Hvor mange prosent av alle ordene er tegnsetting? (ikke regn med ’ i "bro’rs"). Her kan du bruke len() i tillegg.

tekst2 = """Her skal ingen andre skade , vaade ei volde , vorde til bane ,
hugge end ei da med hvasse sverd , om bro’rs bane han bunden ser .

Grotte ei kommen af graafjeld var , ei den haarde hald af mulde ,
ei bjergtrolds mø nu malte saa , hørte trolddom ei hende til ."""

d) Skriv et program som tar inn input fra brukeren, der brukeren først kan skrive en (lengre) tekst. Så kan brukeren spesifisere et ord som skal telles. Skriv ut til terminalen hvor mange ganger ordet som brukeren spesifiserer forekommer i teksten de skrev.

Vis løsningsforslag

a)

liste1 = ["o","s","t","e","p","o","p"]
liste2 = [9.5,2.2,4.5,3.1,23.5]
liste3 = [[1,2,3,4,5,8],[11,13,15,18]]

print(len(liste1))
print(len(liste2))
print(len(liste3))

Utskrift:

7
5
2

Den siste er to fordi det bare er to lister i lista (nøstet liste). Det er likegyldig hvor mange elementer det er i de to listene.

b)

tekst = """Vreid var Vingtor
då han vakna
og hamaren sin
han munde sakne .
Skjegg han riste,
hedna han skok ;
tok son åt Jord
um seg å trivle ."""

lista = tekst.split()
print(lista) #for å sjekke
print(len(lista))

Utskrift:

['Vreid', 'var', 'Vingtor', 'då', 'han', 'vakna', 'og', 'hamaren', 'sin', 'han', 'munde', 'sakne', '.', 'Skjegg', 'han', 'riste,', 'hedna', 'han', 'skok', ';', 'tok', 'son', 'åt', 'Jord', 'um', 'seg', 'å', 'trivle', '.']
29

Her lønner det seg å bruke .split() uten argument (spesifisert streng), siden vi vil dele den på både linjeskift og mellomrom.

c)

tekst2 = """Her skal ingen andre skade , vaade ei volde , vorde til bane ,
hugge end ei da med hvasse sverd , om bro’rs bane han bunden ser .

Grotte ei kommen af graafjeld var , ei den haarde hald af mulde ,
ei bjergtrolds mø nu malte saa , hørte trolddom ei hende til ."""

#gjøre om til liste
splitta = tekst2.split()

#svar på de tre første spørsmålene
print("'ei' forekommer", splitta.count("ei"), "ganger")
print("Kommaet forekommer",splitta.count(","),"ganger")
print("Ordet 'til' forekommer",splitta.count("til"),"ganger")

#for å regne ut c4):
antall_komma = splitta.count(",") #samme som i oppgave c2.
antall_punktum = splitta.count(".")

#så legger vi sammen de to:
tegnsetting = antall_komma + antall_punktum

#så finner vi hvor mange ord det er totalt:
totalt = len(splitta)
print(totalt)

#så regner vi ut prosenten
prosent_tegnsetting = tegnsetting / totalt * 100

print("Tegnsetting utgjør",prosent_tegnsetting,"prosent.")

d)

teksten = input("Skriv en tekst.\n")
ordet = input("Skriv et ord du vil telle.\n")
antall = teksten.count(ordet)
print("Ordet",ordet,"forekommer",antall,"ganger i teksten din.")

Utskrift:

>>>Skriv en tekst.
I dag har jeg spist potetgull og jeg har sovet og jeg har lest pensum .
>>>Skriv et ord du vil telle.
jeg
Ordet jeg forekommer 3 ganger i teksten din.