Gå till innehållet

Listor (Python)

Listor låter dig spara många saker i en bestämd ordning. Perfekt för namnlistor, poäng, tider och mer.

Mål för denna sida

  • Skapa och ändra listor (append, index, len, sort)
  • Loopa över listor

Listor

En lista är en ordnad samling: index börjar på 0.

Python
1
2
3
4
5
6
7
8
kök = []
kök.append("bestick")
kök.append("servetter")
kök.append("påsar")

print("Översta lådan innehåller", kök[0])
print("Mittenlådan innehåller", kök[1])
print("Understa lådan innehåller", kök[2])

Skapa direkt med värden:

Python
1
2
3
4
kök = ["bestick", "servetter", "påsar"]
print(len(kök))       # längden
kök.append("glas")    # lägg till
kök.sort()            # sortera

Loopa över element:

Python
for sak in kök:
    print(sak)

För ordböcker (dict), se sidan kapitel-4/ordbocker.md.

Övningar

1) Läs ett heltal. Skriv om någon siffra i talet är 3 eller 7.

2) Skapa en lista med tre svenska städer där två är hårdkodade och en läses in från användaren. Skriv alla på samma rad.

3) Skapa en lista med meningar (strängar). Skriv ut varje mening på egen rad.

4) Skapa en lista med 10 heltal och skriv ut det största.

5) Skapa en lista med minst 5 årtal, minst ett dubbelt. Läs ett årtal, skriv alla index där det finns, annars “Årtalet kunde inte hittas”.

6) Skapa en lista med minst 5 heltal. Beräkna summan (loopa eller sum(listan)).

7) Låt användaren själv bygga en lista av heltal (fråga efter fler j/n). Välj slumpmässigt ett tal och skriv talet och dess index.

8) Läs en mening, dela till ord med split() och skriv ut ord med radnummer.

9) Läs åldrar tills användaren skriver “n”. Tillåt upp till 100 åldrar, skriv alla efteråt.


Små steg – bygga och läsa listor

1) Skapa en tom lista och append() tre saker. 2) Skriv ut första och sista elementet (index 0 och len(listan)-1). 3) Sortera listan och skriv ut den.

Python
1
2
3
4
5
6
7
namn = []
namn.append("Ava")
namn.append("Noah")
namn.append("Mio")
print(namn[0], namn[-1])
namn.sort()
print(namn)

Loopar över listor (med index också)

Python
1
2
3
4
5
6
frukter = ["äpple", "banan", "päron"]
for frukt in frukter:
    print(frukt)

for i, frukt in enumerate(frukter, start=1):
    print(f"{i}. {frukt}")

Slicing (ta delar av listan)

Python
1
2
3
4
tal = [0, 1, 2, 3, 4, 5, 6]
print(tal[2:5])   # 2,3,4
print(tal[:3])    # 0,1,2
print(tal[4:])    # 4,5,6

Mini-projekt 1: Närvarolista

Låt användaren mata in namn tills tom rad. Skriv sedan listan numrerad.

Utmaningar: - Fråga om ett namn är närvarande och skriv “Ja/Nej”. - Ta bort ett namn om det finns (remove).

Mini-projekt 2: Bästa hoppet

Läs in hopp-längder (float) tills tom rad. Skriv ut bästa hoppet och vilket försök.

Tips: spara både värde och index (med enumerate).

Felsökning

  • IndexError: kollade du att indexet finns? Använd len(lista).
  • Tomma listor: kontrollera att listan inte är tom innan max()/min().

Vanliga listmetoder (snabbguide)

Python
1
2
3
4
5
6
7
8
9
elever = ["Ava", "Noah", "Mio"]
elever.append("Eli")      # lägg till sist
elever.insert(1, "Lea")   # lägg in på plats 1
elever.remove("Noah")     # ta bort första matchen
sist = elever.pop()        # ta bort sista och returnera
elever.sort()              # sortera A→Ö
elever.reverse()           # vänd ordningen
antal = elever.count("Ava")  # räkna förekomst
pos = elever.index("Lea")     # första index för värdet

Micro-övningar: - Bygg en shoppinglista: lägg till, ta bort, skriv ut sorterad lista. - Läs en mening, split() till ord, sortera och skriv tillbaka med " ".join(...).

Hitta felen! (5 fel)

Koden ska bygga en lista med tal och skriva summa och största tal. Rätta fem fel.

Python
1
2
3
4
5
6
7
tal = []
tal[0] = 5
tal.append("7")
tal.append(3)
print("Summa:", sum(tal))
print("Störst:", max(tal, key=len))
print(tal[5])

Facit

Python
tal = []

# Fix 1: Lägg till första värdet med append (kan inte tilldela på tom lista med index)
tal.append(5)

# Fix 2: Lägg till heltal, inte strängar
tal.append(7)

tal.append(3)

# Fix 3: Nu fungerar sum eftersom alla är int
print("Summa:", sum(tal))

# Fix 4: Ta bort felaktig key – max på heltal kräver ingen key
print("Störst:", max(tal))

# Fix 5: Undvik IndexError – skriv ut listan eller kontrollera längden innan index
if len(tal) > 5:
    print(tal[5])
else:
    print("Listan har inte sex element")