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