Listor i Python
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.
#!/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/
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Skapa fristående binärer av Python-skript
Docker har blivit det nya sättet att paketera och köra Python-skript, även när skripten körs från exempelvis ett cronjob. Men ibland behöver vi inte en hel Docker-miljö med den overhead det innebär för väldigt små skript. Då är det smidigare att göra om skriptet till en körbar binärfil. Då kan vi även enkelt flytta filen mellan olika Linuxsystem.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
-
Pythonmiljö i Docker
Ett vanligt användningsområde för Docker är att skapa och köra virtuella Pythonmiljöer. Med en Dockerfile och Docker Compose kan vi automatisera hela processen, från skapandet av miljön till exekveringen.
-
Python och trigonometri
Lite uppfräschning av trigonometri och Python är aldrig fel. Här får vi lära oss hur man kan rita upp rätvinkliga trianglar – direkt i Python – om vi känner till två av sidorna. För detta kommer vi att använda modulerna turtle och math.
-
Python i Windows utan installation
Det går att använda Python i Windows, även utan att installera det. Detta är användbart om du har en dator där du inte har rättigheter att installera program. Det kan till exempel vara en skoldator eller arbetsdator.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.