Listor och sekvenser
Skapa och manipulera dynamiska listor samt använda indexering och slicing.
Ca 55 min · del av Programmering i Python
Begrepp i lektionen
- lista
- indexering
- slicing
- append()
- len()
Efter denna lektion kommer du att kunna skapa dynamiska listor i Python, manipulera dem med inbyggda metoder samt använda indexering och slicing för att effektivt kommas åt och dela upp sekvenser.
Introduktion till listor i Python
En lista i Python är en ordnad samling av element där varje element har en specifik plats. Listor är en av de mest grundläggande och användbara datatyperna i Python eftersom de är dynamiska – vilket innebär att du kan lägga till, ta bort och ändra element efter att listan har skapats.
För att skapa en lista använder du hakparenteser `[]` och separerar elementen med kommatecken. En lista kan innehålla värden av vilken datatyp som helst, och du kan till och med blanda olika datatyper i samma lista, även om det i praktiken är vanligast att lagra element av samma typ.
Exempel på att skapa listor:
python
frukter = ["äpple", "banan", "citron"]
tal = [10, 20, 30, 40]
blandad = [42, "Hej", True, 3.14]
tom_lista = []
För att ta reda på hur många element en lista innehåller använder du den inbyggda funktionen `len()`. Den returnerar antalet element som ett heltal.
python
antal_frukter = len(frukter) # Returnerar 3
En viktig egenskap hos listor är att de behåller den ordning som elementen lades till i. Detta gör att vi kan lita på elementens positioner när vi vill kommas åt dem senare.
Indexering – Åtkomst till enskilda element
För att komma åt ett specifikt element i en lista använder vi indexering. I Python är indexeringen nollbaserad, vilket innebär att det första elementet i listan har index 0, det andra har index 1, och så vidare.
Du kommer åt ett element genom att skriva listans namn följt av indexet inom hakparenteser:
python
frukter = ["äpple", "banan", "citron", "dadel"]
print(frukter[0]) # Skriver ut: äpple
print(frukter[2]) # Skriver ut: citron
Python stöder också negativ indexering. Negativa index räknar bakifrån från slutet av listan: `-1` syftar på det sista elementet, `-2` på det näst sista, och så vidare.
python
print(frukter[-1]) # Skriver ut: dadel (sista elementet)
print(frukter[-2]) # Skriver ut: citron
Om du försöker komma åt ett index som inte finns i listan uppstår ett fel av typen `IndexError`. Om en lista har 4 element är giltiga positiva index 0, 1, 2 och 3. Index 4 ligger utanför listans gränser.
Slicing – Att plocka ut delar av en sekvens
Ibland vill vi komma åt en delmängd av en lista snarare än bara ett enstaka element. Denna teknik kallas *slicing* (eller delsekvensering).
Syntaxen för slicing är `lista[start:stop:steg]`:
- `start`: Index där utdraget börjar (inkluderas).
- `stop`: Index där utdraget slutar (exkluderas – elementet på detta index tas alltså INTE med).
- `steg`: Hur många steg vi hoppar för varje element (frivilligt, standardvärde är 1).
Exempel:
python
siffror = [0, 10, 20, 30, 40, 50, 60]
Plocka element från index 1 upp till (men inte med) index 4
del_1 = siffror[1:4] # Ger: [10, 20, 30]
Om start utelämnas börjar vi från början (index 0)
del_2 = siffror[:3] # Ger: [0, 10, 20]
Om stop utelämnas går vi ända till slutet
del_3 = siffror[4:] # Ger: [40, 50, 60]
Använda steg (t.ex. vartannat element)
del_4 = siffror[::2] # Ger: [0, 20, 40, 60]
Att använda ett negativt steg, till exempel `lista[::-1]`, skapar en helt ny lista där elementen ligger i omvänd ordning.
Dynamiska listor – Lägga till och ta bort element
En av de största fördelarna med listor i Python är att de är *muterbara* (mutable), vilket betyder att deras innehåll kan ändras under programmets körning utan att en helt ny variabel måste skapas.
För att manipulera innehållet i en lista använder vi inbyggda metoder:
Lägga till element:
- `append(element)`: Lägger till ett element längst bak i listan.
- `insert(index, element)`: Sätter in ett element på en specifik position och skjuter alla efterföljande element åt höger.
python
städer = ["Stockholm", "Göteborg"]
städer.append("Malmö") # städer är nu ["Stockholm", "Göteborg", "Malmö"]
städer.insert(1, "Uppsala") # städer är nu ["Stockholm", "Uppsala", "Göteborg", "Malmö"]
Ta bort element:
- `pop(index)`: Tar bort och returnerar elementet på angivet index (om inget index anges tas det sista elementet bort).
- `remove(värde)`: Söker upp och tar bort den första förekomsten av ett specifikt värde.
python
borttagen = städer.pop(0) # Tar bort "Stockholm", returnerar "Stockholm"
städer.remove("Göteborg") # Söker upp och tar bort "Göteborg"
Dessa operationer ändrar listan direkt på plats (in-place).
Hela kursen
- Variabler, datatyper och I/O
- Operatorer och logiska uttryck
- Villkorssatser
- Slingor och iteration
- Listor och sekvenser
- Tupler och mängder
- Dictionaries
- Iteration och list comprehension
- Funktionsdefinitioner och parametrar
- Variablers räckvidd (Scope)
- Moduler och Pythons standardbibliotek
- Läsa och skriva filer
- Felhantering och undantag
- Text- och databearbetning