Hur man jobbar med listor

REPETITION

Förra veckan lärde vi oss om funktioner. Hur man definierar och anropar dessa, vi gick igenom följande:

  • funktionshuvudet: 
    def funktionsnamn(eventuella, parametrar):
  • funktionskroppen:
    koden som körs då funktionen anropas. Kanske skriver den ut något, gör en beräkning och/eller returenerar ett värde.
  • parameter: en slags lokal variabel som används i funktionen och som berättar vid anrop till funktionen vad som förväntas matas in. 
  • argument: de värden man skickar in i en funktion vid anrop.
  • anropa en funktion: genom att helt enkelt skriva namnet på funktionen och se till att matcha antalet parametrar som funktionen förväntar sig med samma antal argument.

Denna veckan är det listor som är på agendan. Vad är en lista i python, och hur används de?

 

LISTOR– SAMLA ELEMENT

Listor är ytterliggare en datatyp som du kan använda för att lagra en samling av olika bitar information som en sekvens under ett enda variabelnamn (datatyper du redan har hört talas om hittills är strängar, heltal, decimaltal och booleaner.) Du kan lägga till element till en lista så här:

listnamn = [element_1, element_2] med elementen mellan parentesen (lägg märke till att det är en kantig parentes vi använder för listor).

En lista kan också vara tom: tom_lista= [].

Du kan komma åt ett enskilt element i listan med dess index. Ett index är som en adress som identifierar elementets plats i listan. Indexet visas direkt efter listnamnet, mellan parentes, så här:
listnamn [index]. Listindex börjar med 0, inte 1!

Du får tillgång till det första elementet i en lista såhär:  listnamn [0] 
Det andra objektet i en lista är på index 1:  listnamn [1]

Ex:
numbers = [5, 6, 7, 8] # numbers är namnet på vår lista, med elementen 5,6,7,8
print(numbers[0] + numbers[2]) # skriver ut summan av det första och tredje elementet
print(numbers[1] + numbers[3]) # skriver ut summan av det andra och fjärde elementet

 

OPERATIONER PÅ ELEMENT I EN LISTA

Vad man då göra för slags operationer på en lista? Precis som med andra datatyper fungerar de vanliga operanderna även på listor, som exempelvis multiplikation:

n = [1, 3, 5] # vår lista
n[1]=n[1]*5 # här multiplicerar vi elementet på plats 2 med 5 och sparar det på samma plats print(n) # skriver ut listan n, [1, 15, 5]

LÄGGA TILL ELEMENT I EN LISTA EFTER ATT DEN SKAPATS

Man kanske vill utöka listan med nya element efterhand, efter att ustan skapats. För att göra det använde rman sig av den inbyggda funktionen som listor har, nämligen .append(). Då kan man göra så här:

n = [1, 3, 5]
n.append(8) # bygger ut listan till 4 element och placerar 8 i slutet 
print(n)

 

VÄLJA ELEMENT UR EN LISTA

För att komma åt specifika element i en lista kan man välja ett intervall på listans index, istället för ett exakt index. På formen listnamn[n:m] , där n är vilket index man startar på (elementet inkluderas) och m är vart man slutar intervallet (elementet exkluderas). Det ser ut så här:

bokstaver = ['a', 'b', 'c', 'd', 'e']
print(bokstaver[1:4]) # skriver ut ['b', 'c', 'd']

TA REDA PÅ LÄNGDEN AV LISTAN

Om man vill veta hur många element en lista innehåller (listans längd), kan man använda funktionen len(listnamn) för att returnera en siffra som motsvarar listans längd.
Ex.

bokstaver = ['a', 'b', 'c', 'd', 'e']
print(len(bokstaver)) # skriver ut 5

SORTERA SIN LISTA

Ofta är en lista osorterad och emellanåt kan man vilja ha en sorterad lista för sitt program, t.ex om man skall räkna ut ett medianvärde. Då är det så smidigt att list-typen redan har en inbyggd funktion för detta! Det finns till och med två varianter. Den ena heter .sort() och sorterar listan. Den andra varianten är sorted(listanamn) och den returnerar listan innanför parenteserna sorterad, men sparar inte listan sorterad.
Ex.

listan = [5, 4, 1, 8, 11, 34, 2]
listan.sort() # sorterar listan
print(listan) # skriver ut [1, 2, 4, 5, 8, 11, 34]


listan = [5, 4, 1, 8, 11, 34, 2]
print(sorted(listan)) # sorterar och printar listan [1, 2, 4, 5, 8, 11, 34]
print(listan) # skriver ut [5, 4, 1, 8, 11, 34, 2] eftersom sorteringen inte sparades utan bara returnerades

FUNKTIONER OCH LISTOR

Vi har såg lite hur man kan använda funktioner förra veckan, och att de kan vara bra för att göra vissa beräkningar som man tenderar att vilja göra ofta. Funktioner kan även ta in listor och arbeta med dessa. Nedan har vi två exempel på hur det kan se ut när man skickar in en lista till en funktion.
Ex.

def list_funktion(list): 
  list[1] = list[1] + 3 # adderar 3 till listelementet på index 1 och sparar
  return list # returenerar den modifierade listan
n = [3, 5, 7] # vår lista
print(list_funktion(n)) # anropar list_funktion med argumentet 'n' som är vår lista och när man fått den nya listan returnerad skriver man ut [3, 8, 7]

-------------------------

def dubblera_forsta(n):
  n[0] = n[0] * 2 # multiplicerar det första elementet med 2

lista = [1, 2, 3, 4] # vår lista
dubblera_forsta(lista) # anropar funktionen dubblera_forsta med lista som argument
print(lista) # skriver ut lista, [2, 2, 3, 4]

ITERERA ÖVER ELEMENT I EN LISTA

Vissa gånger kanske man skulle vilja summera elementen i en lista för att göra beräkningar såsom medelvärde, eller totalsumma. För att göra det så behöver vi använda oss av en for-loop. i representerar varje element med start från index 0, list är den lista som vi ska loopa igenom, ett element i taget. För varje element(loop) så skriver vi ut värdet som finns på den platsen.
Den for-loop vi beskriver ovan ser ut så här:  

for i in list: 
  print(i) 

Ex.

lista = [1, 2, 43] # vår lista
summa = 0 # definierar en variabel som skall samla alla värden i listan
for i in lista:
  summa += i # lägger till elementet på plats i i listan till summa-variabeln
print(summa) # skriver ut summan av elementen i listan, 46

def summera(lista):
  summa = 0
  for i in lista:
    summa += i
  return summa
print(summera(n))

 

VECKANS ÖVNING – TEMPERATURER

Denna vecka har vi fått tag i dagstemperaturerna för Göteborg, från januari och februari i år. Dessa temperaturer är lagrade i var sin lista: temp_jan och temp_feb. Vi vill nu skapa en funktion som kan räkna ut medelvärdet för en sådan lista. För att göra det lätt för oss, kommer vi återanvända den summeringsfunktion vi redan lärt oss definiera i veckans genomgång.

  1. Börja med att definiera funktionen summa(lista) på samma sätt som vi lärt oss i veckans genomgång.
  2. Sedan vill vi definera en funktion som tar emot en lista, och returnerar medelvärdet för listans alla element. Börja med att definiera funktionshuvudet för vår funktion som vi kan kalla medel. Funktionen skall ha en parameter som vi kan kalla lista.
  3. Skriv nu klart funktionskroppen för medel, så den kan returnera medelvärdet av en listas alla element. Ett tips här är att återanvända vår funktion summa(). I beräkning av medelvärdet, tänk då på att vi kan få in listor av olika längd i vår funktion, därför kommer vi behöva funktionen len() för att avgöra längden på listan vi får in.

Lycka till!

SEE ALL Add a note
YOU
Add your Comment