Lijsten¶
Zie boek “Leren programmeren met Python” hoofdstuk 7 pagina 36.
We zagen eerder de eenvoudige datatypes integer, float en boolean. Python maakt echter ook complexere datatypes beschikbaar. Een hiervan, de lijst, maakt het mogelijk om verzamelingen van data bij te houden.
Aanmaken¶
Een lijst aanmaken doe je in Python met:
temperaturen_deze_week = [9, 9, 10, 10, 9, 7, 5]
Of:
games = ['Among Us', 'Fortnite', 'Terraria']
Je mag een lijst ook op meerdere regels weergeven:
leerlingen = [
'Coen',
'Ibe',
'Jelle',
'Marnick',
'Mike',
'Nick',
'Seppe',
'Simon',
]
Opgave 27¶
Schrijf een Python programma waarin je een lijst aanmaakt met je favoriete games, en deze op het scherm afdrukt.
Lengte van een lijst¶
Met de functie len() kan je het aantal elementen in een lijst opvragen:
print(len(leerlingen))
# toont 8
Opgave 28¶
Pas je code uit opgave 27 aan zodat je het aantal games in je lijst afdrukt.
Indexeren¶
Om iets te doen met een bepaald element in een lijst kan je de variabele naam laten volgen door vierkante haakjes, en daartussen een integer die aangeeft welk element je wil gebruiken. Om bijvoorbeeld het eerste element van een lijst af te drukken:
letters = ['a', 'b', 'c']
print(letters[0])
Dit getal tussen de haakjes noemt men de “index”. Je kan ook een negatieve index gebruiken: -1 als index geeft het laatste element van de lijst aan, -2 het voorlaatste enzovoort.
series = [
'Vikings',
'Breaking Bad',
'The Flash',
'Arrow',
]
print(series[0])
# Toont: Vikings
print(series[3])
# Toont: Arrow
print(series[-1])
# Toont: Arrow
print(series[-2])
# Toont: The Flash
Opgave 29¶
Pas je code uit opgave 28 aan zodat je enkel het tweede en het voorlaatste spel uit je lijst op het scherm toont.
For-loop en lijsten¶
Met behulp van een for-loop kan je iets doen met ieder element van een lijst:
for game in games:
print(game)
Opgave 30¶
Pas je code uit opgave 29 aan zodat je voor ieder spel volgende regel op het scherm print:
Ik speel graag Minecraft
Ik speel graag Terraria
Ik speel graag Mario Kart
Berekeningen uitvoeren¶
Zo kan je via een for-loop ook een berekening uitvoeren, zoals het totale aantal views berekenen als je een lijst met dagelijks aantal views van je site beschikbaar hebt:
views_per_dag = [52, 105, 122, 1051, 0, 324, 748]
som = 0
for views in views_per_dag:
som = som + views
print("Het totale aantal views is", som)
# Toont: Het totale aantal views is 2402
Of het gemiddelde van je punten uitrekenen:
rapport = [5, 8, 9, 3, 9.5, 7, 6]
som = 0
for punt in rapport:
som = som + punt
print("Mijn gemiddelde is:", som / len(rapport))
# Toont: Mijn gemiddelde is: 6.785714285714286
Opgave 31¶
Schrijf een Python-programma dat het totale aantal besmettingen berekent met behulp van een for-loop, gebruikmakend van onderstaande lijst van besmettingen per land:
besmettingen = [
1556730, # Spanje
1408868, # Italie
932111, # Duitsland
861331, # Polen
558779, # Belgie
484648, # Nederland
290601, # Zwitserland
249099, # Oostenrijk
208295, # Zweden,
91619, # Griekenland
70461, # Ierland
70485, # Denemarken
32761, # Albanie
32352, # Noorwegen
30333, # Luxemburg
21216, # Finland
]
Opgave 32¶
Pas het programma uit opgave 31 aan, zodat je ook het gemiddelde aantal besmettingen berekent.
Toevoegen¶
Na het aanmaken van een lijst, kan je ze ook nog aanpassen.
Zo kan je elementen achteraan aan je lijst toevoegen met
behulp van de functie append():
videokaarten = [
"RX 6900 XT",
"RX 6800 XT",
"RX 6800",
]
videokaarten.append("RX 6700 XT")
videokaarten.append("RX 6700")
print(videokaarten)
# toont ['RX 6900 XT', 'RX 6800 XT', 'RX 6800', 'RX 6700 XT', 'RX 6700']
Je kan ook elementen toevoegen op een andere plaats in
met behulp van de functie insert():
videokaarten = [
"RTX 3090",
"RTX 3070",
]
videokaarten.insert(1, "RTX 3080")
print(videokaarten)
# toont ['RTX 3090', 'RTX 3080', 'RTX 3070']
Opgave 33¶
Pas het programma uit opgave 32 aan, zodat je het aantal
besmettingen in Slovakije (96241)
achteraan de lijst toevoegt met behulp van append():
Lijst uitbreiden met andere lijst¶
Je kan een lijst ook uitbreiden aan de hand van een andere lijst:
games = ["AC Valhalla", "FIFA 21", "The Last of Us Part II"]
games_2021 = ["Hitman 3", "Super Mario 3D World", "Yakuza: Like a Dragon"]
games.extend(games_2021)
print(len(games))
# Toont: 6
Opgave 34¶
Pas het programma uit opgave 33 aan, zodat je volgende landen
aan de lijst toevoegt met behulp van extend():
extra_landen = [
418645, # Roemenie
121820, # Bulgarije
177952, # Hongarije
1041875, # Mexico
]
Elementen verwijderen uit een lijst¶
Je kan verder elementen verwijderen uit een lijst:
games = ["Far Cry 6", "Dirt 5", "Everspace 2"]
games.remove("Dirt 5")
print(games)
# Toont: ['Far Cry 6', 'Everspace 2']
Opgave 35¶
Pas het programma uit opgave 34 aan, zodat je Mexico verwijdert met behulp van remove().
Slicing¶
Je kan ook een aantal elementen uit een lijst selecteren:
books = [
"The Last Kingdom",
"The Pale Horseman",
"The Lords of the North",
"Sword Song",
"The Burning Land",
"Death of Kings",
"The Pagan Lord",
"The Empty Throne",
]
print(books[:2])
# Toont: ['The Last Kingdom', 'The Pale Horseman']
print(books[2:4])
# Toont: ['The Lords of the North', 'Sword Song']
print(books[7:])
# Toont: ['The Empty Throne']
Opgave 36¶
Pas het programma uit opgave 35 aan, zodat je de eerste drie elementen uit de lijst afdrukt met behulp van “slicing”.
Complexere lijsten¶
In de vorige voorbeelden lieten we telkens lijsten zien die eenvoudige datatypes bevatten. Lijsten mogen echter ook complexere datatypes bevatten, zoals b.v. lijsten. Dit noemt men een “nested list”. Dus, je mag een lijst van lijsten maken, zoals in onderstaande lijst van spellen, die telkens de naam en de MetaCritic score bevat:
ac_games = [
["Valhalla", 85],
["Odyssey", 86],
["Origins", 84],
]
Opgave 37¶
Vul onderstaand programma aan zodat de lijst de coördinaten van iedere kogel op de tekening bevat:
bullets = [
[100, 100],
]
Opgave 38¶
Pas de code uit opgave 37 aan, zodat je volgende coördinaten
met behulp van append() achteraan de lijst toevoegt:
[120, 30]
[200, 105]
Opgave 39¶
Pas de code uit opgave 38 aan, zodat je de kogel op coördinaat
[100, 100] verwijdert met behulp van remove().
Opgave 40¶
Pas de code uit opgave 39 aan, zodat je met een for-loop de coördinaten van iedere kogel afdrukt.
Indexeren van nested lists¶
Net zoals bij de eenvoudigere lijsten, kan je ook bij nested lists elementen gebruiken door middel van de vierkante haakjes. Dus als je het eerste element uit een lijst wenst te gebruiken, gebruik je ac_games[0], voor het tweede element gebruik je ac_games[1]:
ac_games = [
["Valhalla", 85],
["Odyssey", 86],
["Origins", 84],
]
print(ac_games[1])
# Toont: ["Odyssey", 86]
Je kan ook rechtstreeks aan de elementen van de sublijst geraken door tweemaal na elkaar de vierkante haakjes te gebruiken:
print(ac_games[1][0])
# Toont: Odyssey
Een uitgebreider voorbeeld:
ac_games = [
["Valhalla", 85],
["Odyssey", 86],
["Origins", 84],
["Syndicate", 74],
["Black Flag", 84],
["Unity", 70],
]
print(ac_games[1])
# Toont ["Odyssey", 86]
print(ac_games[1][0])
# Toont Odyssey
print(ac_games[1][1])
# Toont 86
Een tweede voorbeeld waarbij we een lijst zien die coördinaten van kogels voorstelt:
bullets = [
[0, 0],
[103, 51],
[40, 53],
[58, 230],
]
print(bullets[1])
# Toont [103, 51]
print(bullets[1][0])
# Toont 103
print(bullets[1][1])
# Toont 51
Opgave 41¶
Pas de code uit opgave 40 aan, zodat je de coördinaten van de eerste kogel afdrukt.
Opgave 42¶
Pas de code uit opgave 41 aan, zodat je enkel het x-coördinaat van de eerste kogel afdrukt.
Opgave 43¶
Pas de code uit opgave 42 aan, zodat je enkel de y-coördinaten van iedere kogel afdrukt.
Opgave 44¶
We zagen hoe je een element uit een lijst kon gebruiken door middel van de vierkante haken (indexeren). We gebruikten dit voorlopig enkel om elementen af te drukken, dus we lazen voorlopig enkel de waarde.
We kunnen elementen van een lijst echter ook rechtstreeks aanpassen doormiddel van deze indexatie:
temperaturen = [9, 9, 10, 10, 8, 7, 5]
temperaturen[1] = 100
print(temperaturen)
# Toont: 9, 100, 10, 10, 8, 7, 5
Pas bovenstaande code aan zodat het eerste element de waarde 200 krijgt, en het laatste element de waarde 500.
Opgave 45¶
In opgave 44 zagen we dat je lijsten ook kan aanpassen door middel van indexatie. Ook voor geneste lijsten werkt dit:
bullets = [
[0, 100],
[200, 100],
]
bullets[0][0] = 8
print(bullets)
# Toont: [[8, 100], [200, 100]]
Pas de bovenstaande code aan zodat de y-coördinaat van de tweede kogel 104 wordt, gebruik makend van indexatie.