Programmering nivå 2

Kap 2.2 – Listor och iteration

Använd listor och loopar för att bearbeta flera värden på ett strukturerat sätt.

Mål med lektionen

När du har arbetat klart med denna lektion ska du:

  • Förstå vad en lista är och när du använder den.
  • Kunna skapa, läsa, ändra och iterera över en lista.
  • Använda for-loopar för att bearbeta listor.
  • Förstå hur listor kan användas för att lösa programmeringsproblem.

Så här lär du dig bäst

Testa varje exempel i koden. Ändra värden, lägg till nya element, ta bort några och observera vad som händer. Det är så du verkligen lär dig hur listor fungerar. Kombinera sedan detta med dina kunskaper om loopar för att bearbeta innehållet.

Vad är en lista?

En lista i Python är en samling av värden som hålls ihop i en och samma variabel. Den kan innehålla tal, strängar eller andra listor.

fruits = ["apple", "banana", "cherry"]
print(fruits)

Du kan också blanda datatyper:

mixed = [1, "two", 3.0]

Läsa och ändra element

Listor är indexerade. Det första elementet har index 0.

print(fruits[0])  # apple

fruits[1] = "orange"
print(fruits)  # ['apple', 'orange', 'cherry']

Lägga till och ta bort element

fruits.append("pear")      # Lägg till sist
fruits.insert(1, "kiwi")  # Lägg till på plats 1
fruits.remove("orange")   # Ta bort ett element

Interaktiv övning: ändra en lista

Testa hur listan förändras när du lägger till, stoppar in eller tar bort värden. Kör ett val i taget och titta på resultatet innan du fortsätter.

Prova till exempel att:

  • lägga till pear sist i listan
  • stoppa in kiwi på index 1
  • ta bort banana och se hur listan blir kortare
fruits = ['apple', 'banana', 'cherry']

Programmering 2-koppling: listor gör att flera värden kan hanteras med samma variabel, och metoder ändrar listans innehåll under programmets körning.

Iterera genom listor med for

Att iterera betyder att gå igenom elementen ett i taget.

for fruit in fruits:
    print(f"I like {fruit}")

Interaktiv övning: iterera över en lista

Skriv några saker separerade med kommatecken. När du kör koden går for-loopen igenom listan ett element i taget.

Tryck på Kör kod för att iterera över listan.

Programmering 2-koppling: iteration gör att samma kod kan användas på varje element i en lista, oavsett hur lång listan är.

Du kan också använda range() och len() för att gå igenom en lista med index:

for i in range(len(fruits)):
    print(fruits[i])

Andra användbara funktioner

numbers = [10, 20, 30]

print(sum(numbers))  # 60
print(len(numbers))  # 3
print(max(numbers))  # 30

Kombinera listor och funktioner

Du kan använda listor som argument till funktioner:

def print_list(lst):
    for item in lst:
        print(item)

print_list(["car", "bike", "bus"])

Du kan också returnera en lista från en funktion:

def even_numbers(n):
    result = []

    for i in range(n):
        if i % 2 == 0:
            result.append(i)

    return result

print(even_numbers(10))  # [0, 2, 4, 6, 8]

Öva själv

Övning 1: Hälsa på fem personer

Skapa en lista med fem namn. Använd en for-loop för att skriva ut en personlig hälsning till varje namn.

Kontrollera programmet

  • Listan ska innehålla exakt fem namn.
  • Varje namn ska skrivas ut tillsammans med en hälsning.
  • Byt ut ett namn och kontrollera att utskriften ändras.

Fundera: Varför behövs bara en print()-rad för att skriva fem hälsningar?

När du har försökt själv: visa lösningsförslaget till övning 1 på GitHub.

Övning 2: Ändra en fruktlista

Skapa listan ["äpple", "banan", "päron"]. Byt ut "banan" mot "apelsin" med hjälp av index. Lägg sedan till "kiwi" sist och ta bort "päron". Skriv till sist ut varje frukt med en for-loop.

Kontrollera programmet

  • "apelsin" ska finnas i den färdiga listan.
  • "kiwi" ska ligga sist.
  • "banan" och "päron" ska inte finnas kvar.

Fundera: Vilken operation ändrar ett befintligt värde, och vilka operationer ändrar listans längd?

När du har försökt själv: visa lösningsförslaget till övning 2 på GitHub.

Övning 3: Beräkna medelvärdet

Skapa funktionen calculate_average(numbers). Funktionen ska ta emot en lista med tal och returnera medelvärdet med hjälp av sum() och len().

Testa funktionen med

  • [2, 4, 6], vilket ska ge 4.0.
  • [10, 20, 30, 40], vilket ska ge 25.0.
  • [5], vilket ska ge 5.0.

Fundera: Varför divideras summan med listans längd?

När du har försökt själv: visa lösningsförslaget till övning 3 på GitHub.

Övning 4: Räkna stora tal

Skapa funktionen count_large_numbers(numbers). Funktionen ska gå igenom en lista och returnera hur många tal som är större än 10.

Testa funktionen med

  • [4, 12, 7, 20], vilket ska ge 2.
  • [1, 2, 3], vilket ska ge 0.
  • [11, 12, 13], vilket ska ge 3.

Fundera: Varför måste räknaren skapas före loopen?

När du har försökt själv: visa lösningsförslaget till övning 4 på GitHub.

Övning 5: Meny för en ordlista

Svårare övning: Här kombinerar du en lista med en meny, funktioner, villkor och en loop.

Gör ett program där användaren kan välja 1. Lägg till ord, 2. Skriv ut alla ord eller 3. Avsluta. Nya ord ska läggas sist i en lista med append(). När listan visas ska en for-loop skriva ut ett ord per rad. Menyn ska fortsätta tills användaren väljer att avsluta.

Testa programmet genom att

  • visa listan innan något ord har lagts till.
  • lägga till minst tre ord och sedan visa listan.
  • göra ett ogiltigt menyval.
  • avsluta programmet med val 3.

Fundera: Varför skapas listan före menyloopen?

När du har försökt själv: visa lösningsförslaget till övning 5 på GitHub.

Övning 6: Resultatregister

Svårare övning: Här kombinerar du listor med funktioner, en meny, beräkningar och undantagshantering.

Skapa ett menyprogram där användaren kan välja 1. Lägg till resultat, 2. Visa sammanställning eller 3. Avsluta. Resultaten ska vara heltal och sparas i en lista. Felaktig inmatning ska hanteras med try och except ValueError. Sammanställningen ska skriva ut varje resultat, medelvärdet och det största resultatet. Om listan är tom ska ett tydligt meddelande visas.

Testa programmet genom att

  • visa sammanställningen när listan är tom.
  • lägga till 10, 20 och 30.
  • kontrollera att medelvärdet blir 20.0 och det största resultatet 30.
  • skriva text i stället för ett resultat.
  • avsluta programmet med val 3.

Fundera: Varför behöver programmet kontrollera om listan är tom innan det beräknar medelvärde och största värde?

När du har försökt själv: visa lösningsförslaget till övning 6 på GitHub.

Reflektion

  • När passar det att använda listor istället för flera separata variabler?
  • Hur påverkas programmet av att du kan bearbeta en hel samling med data?
  • På vilket sätt förbättrar det din kod att kombinera listor med funktioner?

Tillbaka till Kapitel 2