Programmering 1

LISTOR

MÅL

 

  • Vad är en lista? Varför listor?
  • Hur man skapar och använder en lista
  • Loopa genom listor
  • Olika metoder för listor för att lägga till, ta bort, ändra, sortera etc.

Vad är en lista?

En ordnad samling element som vart och ett kan identifieras med ett nummer, ett s.k index.

Varför är listor användbara?

Listor tilför en datastruktur som gör det möjligt att iterera över, gruppera, sortera över flera element på ett effektivt sätt.

todo_1 = "Matte"
todo_2 = "Svenskauppsats"
todo_3 = "Kodsuppgift"
todos = ["Matte", "Svenskauppsats", "Koduppgift"]

Inte effektivt med en variabel för varje element

todos = ["Matte", "Svenskauppsats", "Koduppgift"]

Hakparentes [] runt listan och kommatecken , mellan varje element 

todo_1 = "Matte"
todo_2 = "Svenskauppsats"
todo_3 = "Kodsuppgift"

todos = [todo_1 , todo_2, todo_3]

Ange variabelnamnet i listan.

Hur skapar man listor?

some_list = [True, 1.66, "Hello"]

I Python är det möjligt att definiera element av olika datatyper i listan

Element av olika datatyper

Ta reda på antalet element i listan?

todos = ["Matte", "Svenskauppsats", "Koduppgift"]

len(todos) # Skriver ut 3 

Använda inbyggda funktion len(). Samma funktion som längden av en sträng.

Hämta värden från en lista

Referera till indexnumret. Första elementet i listan är alltid på position 0

friends = ["Kalle", "Bosse", "Sven", "Harry"]
print(friends[0]) # Skriver ut Kalle
print(friends[1]) # Skriver ut Bosse
print(friends[2]) # Skriver ut Sven
print(friends[3]) # Skriver ut Harry
print(friends[4]) # IndexError - finns ej i listan
print(friends[-1]) # Skriver ut sista elementet i listan

1

0 

2

3

INDEX

Sista elementets index är alltså len(friends) - 1. Eller använd endast -1

Finns värdet i listan?

friends = ["Kalle", "Bosse", "Sven", "Harry"]

"Sven" in friends # True
"Joker" in friends # False

Iterera över alla element i en lista

colors = ["magenta", "lila", "ljusgul", "azurblå"]

for color in colors:
  print(color)
  
colors = ["magenta", "lila", "ljusgul", "azurblå"]

print(colors[0])
print(colors[1])
print(colors[2])
print(colors[3])

Onödig repetition

En loop!

... eller med en while-loop

colors = ["magenta", "lila", "ljusgul", "azurblå"]

index = 0

while index < len(colors)
	print(colors[index])
  	index += 1
  
# Skriver ut...
# magenta
# lila
# ljusgul
# azurblå

Lite mer kod med en while-loop. Men ibland vill man kunna använda index-numret!

for-loop med enumerate

colors = ["magenta", "lila", "ljusgul", "azurblå"]

for index, color in enumerate(colors):
	print(index, color)
    
# Skriver ut...
# 0 magenta
# 1 lila
# 2 ljusgul
# 3 azurblå

Där du även får indexnumret!

Skapa en lista av annan itererbar datatyp

subject = list('Programmering')
>> subject
['P', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g']
    

Exempelvis en sträng får en lista av enstaka tecken

Listmetoder

Metoder som vi kan använda på listor som att lägga till, ta bort, sortering, etc.

 

Dessa skulle kunna implementera själv, men finns redan färdigt  i Python.

append

Lägga till ett element sist i listan

first_list = [1, 2, 3, 4]

first_list.append(5)

print(first_list) # [1, 2, 3, 4, 5]
second_list = [] #Börja med tom lista

second_list.append(1)
second_list.append(2)
second_list.append(3)

print(second_list) # [1, 2, 3]

insert

Lägger till ett element på en given position

first_list = [1, 2, 3, 4]

# Lägger till först i listan
first_list.insert(0, 'Hi!') 

print(first_list) # ['Hi', 1, 2, 3, 4]

first_list.insert(-1, 'The end!') 

print(first_list) # ['Hi', 1, 2, 3, 'The end!', 4]

pop

Tar bort ett element på given position

Om index saknas tar pop bort sista elementet i listan.

first_list = [1, 2, 3, 4]

first_list.pop() # 4

first_list.pop(1) # 2

print(first_list)


# Skriver ut [1, 3]

remove

Tar bort det bort första förekomsten av ett värde.

Om värdet inte finns i listan upsptår felet ValueError.

first_list = [1, 2, 3, 4, 4, 4]

first_list.remove(2)

print(first_list) # [1, 3, 4, 4, 4]

first_list.remove(4)

print(first_list) # [1, 3, 4, 4]

clear

Tar bort alla element från listan

first_list = [1, 2, 3, 4]

first_list.clear()

print(first_list) # []

index

Söker igenom listan för ett specifikt värde.

Returnerar index för första förekomsten. 

numbers = [5, 6, 6, 7, 8, 9, 10]

numbers.index(6) # 1
numbers.index(9) # 5

count

Ger tillbaka hur många gånger ett element förekommer

numbers = [1, 2, 3, 4, 3, 2, 1, 4, 10, 2]

numbers.count(2) # 3
numbers.count(21) # 0
numbers.count(3) # 2

reverse

Ordnar listan i omvänd ordning

first_list = [1, 2, 3, 4]

first_list.reverse()

print(first_list) # [4, 3, 2, 1]

sort

Sorterar listan.

another_list = [6, 4, 1, 2, 5]

another_list.sort()

print(another_list) # [1, 2, 4, 5, 6]

join

Sätter ihop alla elementen i listan-

words = ['Coding', 'Is', 'Fun!']

' '.join(words) # 'Coding is Fun!'

Här används alltså mellanslag " " för att sätta ihop elementen i listan

sentence = "Coding Is Fun!"

words = sentence.split(" ") 

print(words) # ['Coding', 'Is', 'Fun!']

Det omvända:

split() skapar en lista utifrån " " som separator

slice

Skapar en ny lista utifrån delar av ursprungslistan

first_list = [1, 2, 3, 4]

first_list[1:3] # [2, 3]

first_list[1:] # [2, 3, 4]
some_list[start:end:step]

Nästlade listor

Helt enkelt en lista i en lista

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Hämta från nästlade listor

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

nested_list[0][1] # 2

nested_list[1][-1] # 6

Skriva ut nästlade listor

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for l in nested_list:
    for val in l:
        print(val)


# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9

Programmering 1 i Python - Listor

By Sandra Larsson

Programmering 1 i Python - Listor

The hole shabang

  • 281