Slik bruker du for-løkker i Python

Lær å bruke for-løkker i Python med range(), lister og strenger. Iterering forklart med eksempler.

Videoforhåndsvisning

Opprett konto for å se video

Det er helt gratis og tar under 30 sekunder

Opprett gratis kontoHar du konto? Logg inn

Du har en liste med navn og vil skrive ut hvert enkelt, eller du vil gjenta en handling 100 ganger uten å kopiere samme linje 100 ganger. En for-løkke i Python lar deg iterere gjennom sekvenser og gjenta kode automatisk. Den er det verktøyet du kommer til å bruke oftest for repetitive oppgaver.

Slik fungerer en enkel for-løkke

En for-løkke starter med nøkkelordet for, en variabel som holder verdien for hver runde, in, og noe å iterere over. Etter kolon kommer den innrykkede kodeblokken som kjører for hver iterasjon:

for i in range(5):

    print(i)

Denne koden skriver ut tallene 0, 1, 2, 3 og 4. Variabelen i starter på 0 og øker med 1 for hver runde. Løkken stopper før den når 5. Det betyr at range(5) gir deg fem iterasjoner, men det høyeste tallet er 4.

range() med start, stopp og steg

Med bare ett argument starter range() alltid på 0. Du kan gi den opptil tre argumenter: start, stopp og steg.

for i in range(2, 11):

    print(i)

Her starter du på 2 og går opp til (men ikke med) 11. Du får altså tallene 2 til 10.

for i in range(0, 20, 2):

    print(i)

Det tredje argumentet er steget. Med 2 som steg får du 0, 2, 4, 6, 8 og så videre opp til 18. Steget kan også være negativt for å telle nedover: range(10, 0, -1) gir 10, 9, 8 ned til 1.

Iterere over tekst og lister

For-løkker i Python er ikke begrenset til tall. Du kan iterere direkte over strenger, lister, og andre sekvenser:

tekst = "Python"

for bokstav in tekst:

    print(bokstav)

Denne koden skriver ut P, y, t, h, o, n. Hver bokstav i strengen. Variabelnavnet bokstav er et valg du gjør selv. Det kan hete hva som helst, men et beskrivende navn gjør koden lettere å forstå.

Samme prinsipp gjelder for lister:

navn = ["Ola", "Kari", "Per"]

for person in navn:

    print(person)

Telle forekomster med en for-løkke

Et klassisk bruksområde er å telle noe i en sekvens. Si at du vil finne antall ganger bokstaven "a" forekommer i en tekst:

tekst = "Banan og ananas"

antall = 0

for bokstav in tekst:

    if bokstav == "a":

        antall += 1

print(antall)

Her bruker du en if-setning inne i løkken for å filtrere. Operatoren += er en kortform for antall = antall + 1. Resultatet blir 5, fordi teksten inneholder fem små a-er.

enumerate() gir deg indeks og verdi

Noen ganger trenger du både verdien og posisjonen. I stedet for å bruke range(len(...)) og hente verdier manuelt, kan du bruke enumerate():

frukter = ["eple", "banan", "pære"]

for indeks, frukt in enumerate(frukter):

    print(indeks, frukt)

Du får 0 eple, 1 banan, 2 pære. Funksjonen enumerate() pakker indeks og verdi sammen, og du pakker dem ut i to variabler i for-linjen. Det er renere og lettere å lese enn å bruke en tellervariabel manuelt. Vil du at tellingen skal starte på 1 i stedet for 0, skriver du enumerate(frukter, start=1).

Nøstede for-løkker

Du kan plassere en for-løkke inne i en annen. Den indre løkken kjører fullstendig for hver runde i den ytre:

for rad in range(3):

    for kolonne in range(3):

        print(rad, kolonne)

Med 3 rader og 3 kolonner får du 9 kombinasjoner totalt. Nøstede løkker er nyttige for rutenett, tabeller og parvise sammenligninger, men vær oppmerksom på at antall kjøringer multipliseres. To løkker med 1000 iterasjoner hver gir 1 million kjøringer til sammen.

Sjekke partall med modulo i en for-løkke

En for-løkke kombinert med en if-setning lar deg filtrere verdier mens du itererer. Her er et eksempel som skriver ut bare partallene mellom 0 og 10:

for num in range(11):

    if num % 2 == 0:

        print(num)

Modulo-operatoren % gir resten etter divisjon. Er resten 0 etter divisjon med 2, er tallet et partall. Du får 0, 2, 4, 6, 8 og 10. Mønsteret med å sjekke hvert element og bare behandle det som oppfyller en betingelse, er noe du bruker hele tiden i Python.

For-løkker kjører raskt

Python håndterer store antall iterasjoner uten problemer. En for-løkke med en million runder fullføres på under et sekund for enkle operasjoner. Du trenger sjelden å bekymre deg for ytelse med for-løkker, med mindre du jobber med tunge beregninger eller veldig store datasett.

Neste steg

For-løkker er perfekte når du vet hvor mange ganger koden skal kjøre, eller når du itererer gjennom en sekvens. Når du i stedet vil gjenta kode til en betingelse endrer seg, er while-løkker riktig verktøy. Vil du avbryte en løkke tidlig eller hoppe over enkeltiterasjoner, viser artikkelen om break og continue hvordan. For en komplett referanse over for-setningen, se Python-dokumentasjonen.

Denne videoen er hentet fra kurset Python for nybegynnere på Utdannet.no. I kurset bygger du videre på for-løkker med lister og ordbøker, løser oppgaver underveis, og lærer teknikker som list comprehensions og filhåndtering i løkker.