Logga in för att kunna spara vad du har gjort.
<< Föregående
Hem
Nästa >>
VARNING! Fönstret är för smalt för att använda pythonlabbet.se fullt ut. Använd en enhet med tangentbord!

Listor

I det här avsnittet kommer du att lära dig

Grundläggande om listor

När man programmerar är det mycket vanligt att använda en struktur som kan lagra ett antal värden i en viss ordning. Kärt barn har många namn och det kan heta array (engelska, fält på svenska), lista eller vektor. I Python används ordet lista.

En lista tillåter dubletter. Det går också bra att ha listor inuti en lista för att på sätt skapa en matris eller tvådimensionell lista. I Python kan olika element vara av olika typer, så är det inte i många andra språk.

Vi börjar med att skapa en lista bestående av tre frukter. För att skapa listan används hakparenteser [ ]. På svenska tangentbord skrivs hakparanteser med Alt Gr + 8 och Alt Gr + 9. Värden i listan separeras med kommatecken. Med hjälp av print skriver vi ut innehållet i listan.

Exempel

Vi skapar en lista vid namn frukter som innehåller tre strängar av fruktnamn och skriver ut den.

frukter = ['Äpple', 'Banan', 'Mango']
print(frukter)

I en lista börjar vi alltid att räkna från noll. Det första elementet har index 0. I exemplet ovan kan vi läsa av det första värdet i listan genom att skriva frukter[0]. För att läsa det andra värdet i listan skriver vi frukter[1] och så vidare.

I Python kan vi använda negativa index för att gå baklänges från slutet. Det sista elementet läses med frukter[-1] och med frukter[-2] läses det näst sista elementet.

Att det första elementet i en lista är element 0 är normalt förvirrande för nybörjare. Vad värre är, det finns programmeringsspråk där räkningen börjar från ett, även om det är ovanligt.

Exempel

Hur vi kan läsa av värden. Vi använder notationen frukter[i] där i är indexet för elementet i listan.

frukter = ['Äpple', 'Banan', 'Mango']
första_elementet = frukter[0]
andra_elementet = frukter[1]
tredje_elementet = frukter[2]
sista_elementet = frukter[-1]

Logga in eller skapa konto för att spara dina framsteg och din kod.

Vad gör koden?

Läs koden nedan och försök lista ut vad programmet skriver ut. Kör programmet efter du svarat och se om du fick rätt.

-- Programmets utskrifter --

Fråga: Vad kommer programmet ovan att skriva ut?

Java
Python
PHP

Lägga till och ta bort element

Vi kan skriva frukter = [] för att skapa en tom lista. För varje lista som skapas följer det med ett antal funktioner som kan användas på listan, som append() och pop(). Vi skriver listans namn, följt av en punkt för att komma åt dess funktioner. Vi kan till exempel skriva frukter.append('Päron') för att lägga till en frukt till i listan. Det nya elementet hamnar sist i listan.

Funktionen pop(index) kan användas för att ta bort elementet på plats index ur en lista. Exempelvis om vi vill ta bort det första elementet i listan skriver vi frukter.pop(0). Om vi vill ta bort det sista elementet räcker det att skriva frukter.pop(), utan argument används -1 som standardindex. Funktionen pop() returnerar även det elementet som tagits bort ifall vi vill använda det.

Exempel

Vi börjar med en tom lista, lägger till ett par element och tar bort första och sista. Klicka på att testa för att se vad listan innehåller vid de olika stegen.

frukter = []
frukter.append('Äpple')
frukter.append('Banan')
frukter.append('Mango') #frukter = ['Äpple', 'Banan', 'Mango']

frukter.pop(0) #ta bort första elementet, 'Äpple'.
frukter.pop(-1) #ta bort sista elementet, 'Mango'.

Exempel

En lista kan innehålla vilken datatyp som helst, till exempel heltal. Här skapas först en lista med tre heltal. Heltalet 20 läggs till i listan och sedan tas det andra heltalet i listan bort.

tal = [10, 5, 35]
tal.append(20)
borta = tal.pop(1)
print('Vi tog bort talet ' + str(borta))

Logga in eller skapa konto för att spara dina framsteg och din kod.

Vad gör koden?

Läs koden nedan och försök lista ut vad programmet skriver ut. Kör programmet efter du svarat och se om du fick rätt.

-- Programmets utskrifter --

Fråga: Vad kommer programmet ovan att skriva ut?

Volvo
Tesla
Audi

Det är bra att känna till att om listan är stor så är det ganska ineffektivt att till exempel ta bort och lägga till element i listan (förutom om det är i slutet av listan). Om det ska göras ofta så finns det bättre datastrukturer som vi ska lära oss mer om senare.

Listans längd

För att se hur många element som finns i en lista kan vi använda hjälpfunktionen len() med listan som argument. Det är till exempel användbart om vi vill loopa igenom hela listan med while.

Exempel

Skriver ut varje element i listan på en egen rad. Passar också på att visa hur en lista kan skapas med ett element per rad.

roliga_eng_ord = [
    'Shenanigans', 
    'Bamboozle', 
    'Bodacious', 
    'Brouhaha', 
    'Canoodle', 
    'Malarkey'
]

antal = len(roliga_eng_ord)
index = 0
while index < antal:
  print(roliga_eng_ord[index])
  index = index + 1

I exemplet ovan är villkoret för att fortsätta loopen att index < antal. Det är viktigt att index aldrig blir lika stort som antal. I listan roliga_eng_ord finns sex element. Om vi försöker läsa utanför listan då index = 6 med roliga_eng_ord[6] så stannar programmet och vi får ett felmeddelande.

Exempel

Exempel på felmeddelande om vi försöker läsa av utanför listan. Sista elementet läsas av med lista[5]. lista[6] resulterar i ett felmeddelande av typen IndexError.

lista = [1, 2, 3, 4, 5, 6]
print( lista[5] ) #skriver ut 6
print( lista[6] ) #ger fel

Finns elementet i listan?

Med hjälp av in kan vi se om ett elemement finns i listan. Exempelvis är 5 in lista True om 5 finns i listan. Vi kan kombinera med not för att se om elementet inte finns med i listan.

Exempel

Vi skapar en lista med namn och testar sedan om namnet är med i listan eller inte. Testa gärna med andra namn.

laget = ['Anton', 'Beatrice', 'Cecilia', 'David']

if 'Cecilia' in laget:
  print('Cecilia är med i laget.')

if 'Zlatan' not in laget:
  print('Zlatan är inte med i laget.')
  

Testa dina kunskaper

Nedan följer två uppgifter för att lära dig använda listor.

Logga in eller skapa konto för att spara dina framsteg och din kod.

Ändra i koden

Programmet ska ta emot ett antal heltal från användaren, lägga dem i en lista och sedan skriva ut listan sorterad. För att sortera listan används lista.sort().

-- Programmets utskrifter --

Logga in eller skapa konto för att spara dina framsteg och din kod.

Filtrera ut positiva tal

Skriv en funktion med namn filter som tar emot en lista i sitt enda argument. Returnera en ny lista som endast innehåller de positiva heltalen från den ursprungliga listan och i samma ordning.

-- Programmets utskrifter --
Status
Du har inte gjort klart någon uppgift än (0 st).