Listor#
En svaghet för de variablerna vi än så länge har introducerat är att vi endast kan lagra ett värde per variabel, vilket inte alltid är det vi vill. En listor kan laga fler värden i samma variabel. Nedan följer ett exempel på när en lista kan användas för att lösa helt nya sorters problem.
namn_lista = ['Emma', 'Hussein', 'Lia', 'Malcolm', 'Ava']
I exemplet ovan skapar vi en lista för att hålla redan på namnen, exempelvis i en klass som läser programmering. Om vi nu vill redigera den här listan finns det inbggda funktioner och metoder som gör att man kan ändra listan utan att behöva deklarera en ny.
Säg till exempel att det tillkommer en till person vi behöver lägga till på listan. Då använder vi en inbyggd metod i listorna som lägger till det namnet.
namn_lista = ['Emma', 'Hussein', 'Lia', 'Malcolm', 'Ava']
namn_lista.append('Linus')
print(namn_lista)
Tips
Kopiera koden, kör den och se resultatet!
Metoden .append()
lägger alltså till ett nytt element i listan. I andra situationer kanske det blir relevant att en person ska tas bort från listan, då kan det göras på lite olika sätt. Säg att vi vill ta bort Lia, då hade det varit bäst att göra det på följande sätt.
namn_lista = ['Emma', 'Hussein', 'Lia', 'Malcolm', 'Ava', 'Linus']
namn_lista.remove('Lia')
Tips
Kopiera koden, kör den och se resultatet!
Hantera element i listor#
Det finns en hel del olika sätt att hantera olika element i listor. Nedan följer lite simpla sätt att få åtkomst till olika element i en lista samt skapa dellistor. Mer information om det kommer lite längre ner.
För att nå ett specifikt element i listan skrivs det på följande sätt.
namn_lista = ['Emma', 'Hussein', 'Lia', 'Malcolm', 'Ava', 'Linus']
print(namn_lista[0])
print(namn_lista[5])
print(namn_lista[-1])
Tips
Kopiera koden, kör den och se resultatet!
Listor i Python är nollindexerade vilket betyder att det första elementet i listan befinner sig på plats 0 i listan, det andra elementet på plats 1, osv.
I vissa situationer vill man dela upp listan i dellistor, då kan det vara smidigt att använda skivningsoperatorer. En skivningsoperator fungerar på följande sätt:
[start:stop:steg]
Start indikerar var man vill börja med att dela upp listan, stop betyder var man vill sluta med att dela upp listan och steg innebär hur många steg som ska hoppas över per element när dellistan ska skapas. Vi återvänder till exemplet med namn_lista
för att skapa några olika dellistor.
namn_lista = ['Emma', 'Hussein', 'Lia', 'Malcolm', 'Ava', 'Linus']
print(namn_lista[0:2])
print(namn_lista[0:5:2])
print(namn_lista[0:5:3])
Tips
Kopiera koden, kör den och se resultatet!
Fler metoder och funktioner med listor#
Det finns en hel rad olika metoder och funktioner som är inbyggt i Python rörande listor, nedan listas en hel rad olika metoder och funktioner.
Metod |
Betydelse |
---|---|
|
Lägger till ett element sist. |
|
Tar bort alla element ut listan. |
|
Skapar en kopia av listan dvs ett nytt objekt med samma innehåll. |
|
Räknar antalet förekomster visst element. |
|
Lägger till alla element från en annan lista. |
|
Returnerar index för första förekomst av ett element. |
|
Stoppar in ett nytt element på angivet index. |
|
Tar bort och returnerar sista elementet. |
|
Tar bort första förekomst av angivet element. |
|
Vänder på listan. |
|
Sorterar listan. |
|
Tar bort dubbletter. |
|
Tittar på överlappen mellan två listor. |
|
Räknar antalet element i listan. |
If-, elif- och else med listor#
Vi kan titta om exemelvis element finns i en lista eller om ett element inte finns i en lista.
namn_lista = ['Emma', 'Hussein', 'Lia', 'Malcolm', 'Ava', 'Linus']
if 'Emma' in namn_lista:
print('Emma finns i listan')
else:
print('Emma finns inte i listan')
Vilket kan vara mycket användbart för att inte till exempel skapa dubletter i listor.
Videogenomgång#
Genomgången på listor är i början av videon fram till ungefär 11:30, sedan kommer nästa genomgång.
Övningar till avsnittet#
Övning 3.1#
Skapa ett program där en lista med dina fyra favoritfrukter är inkluderade i en lista. Skriv sedan ut den första och den sista frukten i listan.
Tips
Använd []
efter listan för att få åtkomst till olika element inom listan, [-1]
indikerar det sista elementet i listan.
Övning 3.2#
Skriv ett program som tar en mening från användaren, exempelvis:
Det här är en mening.
Dela upp meningen i en lista där varje ord är ett element. Skriv sedan ut listan.
Tips
Använd metoden split()
efter input-satsen för att dela upp en text i en lista.
Övning 3.3#
Skapa ett program som tittar på en lista med tal innehåller talet 30, om talet finns med ska programmet skriva ut ”Talet finns i listan”, annars ska programmet skriva ut ”Talet finns inte i listan”.
Tips
Använd if-satsen och en else-sats.
Övning 3.4#
Skapa ett program som frågar efter två listor som input och som sen skriver ut båda listorna tillsammans i en lista.
Tips
Lägg till .split()
för att dela upp listorna. Använd +-operatorn för att lägga ihop två listor.
Övning 3.5#
Skapa ett program som innehåller 12 siffror. Skriv sedan ut varannat element i listan, var tredje element i listan och var fjärde element i listan.
Tips
Använd skivningsoperatorerna.
Övning 3.6#
Kopiera listan nedan.
namn_lista = ['Ali', 'Adrian', 'Assar', 'Assad', 'Ali']
Skriv ett program som skriver ut hur många gånger namnet 'Ali'
förekommer i listan.
Tips
Använd en inbyggd metod för listor som heter count().
Övning 3.7#
Skapa ett program som sorterar och skriver ut listan nedan i storleksordning.
nummer_lista = [5, 2, 7, 1, -1]
Tips
Använd en inbyggd metod för listor som heter sort().
Övning 3.8#
Skapa ett program som hittar och skriver ut det största och det minsta elementet i listan nedan.
numb_list = [11, 23, 140, -54, -55, 43, 90]
Tips
Använd en inbyggd metod för listor som heter min() respektive max().
Övning 3.9#
Skapa ett program som beräknar och skriver ut hur många element det är i listan nedan.
char_list = ['a', 'b', 'd', 'e'. 'f']
Tips
Använd en inbyggd metod för listor som heter len().
Övning 3.10#
Skapa ett program som innehåller en lista med minst 10 heltal. Låt programmet sortera listan i:
Stigande ordning
Fallande ordning
Skriv ut resultaten.
Tips
Metoden sort()
, om du vill ha den i andra ordningen använd sort(reverse=True)
.
Övning 3.11#
Skapa ett program som utgår från listan:
namn_lista = ['Ali', 'Adrian', 'Assar', 'Assad']
Fråga sedan användaren efter ett namn, om namnet finns i listan redan ska namnet tas bort. Om namnet inte finns ska namnet läggas till i slutet av listan.
Tips
Använd if-satsen och en else-sats. Samt använd .append()
och .remove()
.
Övning 3.12#
Skapa ett program som utgår från listan:
ind_val = ['Matematik 4', 'Matematik 5', 'Engelska 7', 'Programmering 1', 'Naturkunskap 2']
Fråga sedan användaren om ett ämne. Om ämnet finns först i listan ska programmet skriva ut ”Först i listan”. Om ämnet finns sist i listan skrivs det ut ”Sist i listan”. Om det finns någonstans i listan ska det skrivas ut och om ämnet saknas helt skrivs det ut ”Det finns inte i listan”.
Tips
Använd först en input-sats, sen en if-sats, två elif-sats och en else-sats. Samt använd titta efter positionen [0] och [-1] i listan.
Övning 3.13#
Skapa två listor med heltal, t.ex.:
lista1 = [5, 2, 9]
lista2 = [8, 1, 6]
Skriv ett program som:
Kombinerar de två listorna
Sorterar den kombinerade listan i stigande ordning
Tar bort dubbletter från den sorterade listan
Skriv ut den slutgiltiga listan.
Tips
Använd +
för att kombinera listor, och metoden set()
för att ta bort dubbletter
Övning 3.14#
Låt användaren skriva in en mening. Skriv ett program som:
Räknar antalet ord i meningen
Hittar det längsta ordet
Hittar det kortaste ordet
Skriv ut resultaten.
Tips
Du kan använda metoder som split()
och funktioner som max()
och min()
.
Övning 3.15#
Skapa två listor med heltal.
lista1 = [1, 2, 3, 4, 5]
lista2 = [4, 5, 6, 7, 8]
Skriv ett program som:
Hittar de gemensamma elementen mellan listorna
Räknar antalet gemensamma element
Tips
Använd set.intersection()
och len()
.
Övning 3.16#
Skapa en lista med minst 10 element. Skriv ett program som roterar listan ett bestämt antal steg åt höger. Användaren ska kunna ange hur många steg listan ska roteras.
Exempel:
Lista: [1, 2, 3, 4, 5]
Steg: 2
Resultat: [4, 5, 1, 2, 3]
Tips
Använd slicing för att dela upp listan och kombinera delarna igen.
Lösningar till övningar#
Uppdaterad video kommer!