Det finns i huvudsak tre olika sorters listor i Python, vilka är vanliga listor, tupletter (skrivskyddade listor) och ordlistor.

Vanliga listor och tupletter

De vanliga listorna skrivs med hakparanterser runt elementen, medan tupletterna skrivs med vanliga parenteser. Man kommer åt de olika elementen i listorna med hjälp av dess position i listan. Kom ihåg att man alltid börjar på position 0. Position 0 är alltså det första elementet i listan.

#!/usr/bin/env python3

enLista = ["dator", "telefon", "penna", "papper"]
print (enLista[1]) # Skriver ut "telefon"

enTuplett = ("knatte", "fnatte", "tjatte")
print (enTuplett[2]) # Skriver ut "tjatte"

enLista[0] = "surfplatta" # Byt ut "dator" mot "surfplatta"

Att lägga till nya element i listan är också enkelt och görs med append() och insert()-metoderna för listor.

#!/usr/bin/env python3

enLista.append("lastbil") # Lägger till "lastbil" sist i enLista
enLista.insert(1, "glass") # Lägger till "glass" på position 1
                           # och flyttar alla andra element ett steg
                           # åt höger

Att loopa igenom vanliga listor och tupletter är också väldigt enkelt i Python med for-loopen.

#!/usr/bin/env python3

raknare = 1
enTuplett = ("knatte", "fnatte", "tjatte")
for anka in enTuplett:
    print ("Anka nummer", raknare, "heter", anka)
	raknare = raknare + 1

Kodstycket ovan kommer att skriva ut nedanstående rader på skärmen.

Anka nummer 1 heter knatte
Anka nummer 2 heter fnatte
Anka nummer 3 heter tjatte

Vad kan man då ha för användning av skrivskyddade listor, alltså tupletter? Dels är de snabbare än vanliga listor, just för att de inte går att ändra i, dels är det användbara att lagra sådant i som aldrig ska kunna ändras, t.ex. namnen på veckodagarna.

#!/usr/bin/env python3

veckordagar = ("måndag", "tisdag", "onsdag", "torsdag", "fredag", \
	"lördag", "söndag")
veckodagar[2] = "lisas dag"

Kör vi ovanstående kod kommer vi få ett felmeddelande i stil med detta.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Här ser vi klart och tydligt att det inte går att ändra på en tuplett när den väl har skapats.

Ordlistor

Ordlistor skiljer sig på två viktiga punkter gentemot vanliga listor och tupletter. För det första så finns det inga positioner i en ordlista, utan man hänvisar istället till dess namn. För det andra så finns det ingen inbördes ordning i en ordlista. Den ordning du skriver in nyckel/värde-paret i kommer inte att behållas.

ANNONS FÖR VÅRA EGNA BÖCKER Demonerna på internet

#!/usr/bin/env python3

ordlista = {"januari": 31, "februari": 28, "mars": 31, "april": 30}
for manad, dagar in ordlista.items():
	print (manad, "har", dagar, "dagar")

Om du kör ovanstående kodstycke gång på gång så kommer ordningen alltid vara annorlunda mot föregående gång. Detta beror just på att det inte finns någon ordning, istället finns det ett namn (månaden i det här fallet) som hänvisar till ett visst värde (antalet dagar i månaden). Vi kan precis som med listor hämta ett visst värde, men istället för att hänvisa till dess position hänvisar vi istället till dess namn. Vi fortsätter med koden ovan och skriver ut antalet dagar i februari.

#!/usr/bin/env python3

print (ordlista["februari"]) # Skriver ut 28

Och precis som med vanliga listor kan vi lägga till nya saker i efterhand till vår ordlista. Detta görs dock på ett lite annorlunda sätt jämfört med de vanliga listorna. Vi fortsätter på månaderna och lägger till ytterligare en månad, maj, i vår ordlista.

#!/usr/bin/env python3

ordlista["maj"] = 31 # Lägger till "maj" med 31 dagar till ordlistan

Avslutning

Detta var en kort liten introduktion till listor i Python. Det finns mycket mer intressanta saker att lära sig om listor. För en mer komplett genomgång finns vår bok, Grunderna i programmering. Pythons egna dokumentation är också bra och finns på https://docs.python.org/3/