🧐 Wist je dat…

… je een string eigenlijk ook kan zien als een lijst? Het is een geordende opeenvolging van karakters. Bijvoorbeeld, 'jonas' = ['j','o','n','a','s'].

Toch is er een belangrijk verschil tussen een string en een lijst!

Een lijst is muteerbaar: je kan de elementen aanpassen zonder dat je een nieuwe lijst moet maken. Een string is niet muteerbaar: indien je de waarde wil aanpassen, dan moet je een nieuwe string maken.

❗ Begrip - Muteerbaar

Een datastructuur is muteerbaar (mutable in het Engels) als de waarde ervan kan veranderen zonder die datastructuur opnieuw te moeten aanmaken.

Dat lijsten muteerbaar zijn is te verklaren aan de hand van het geheugen en de manier waarop lijsten opgeslagen worden.

👀 Voorbeeld - Namen in het geheugen

Indien we de klaslijst in het geheugen weergeven, dan ziet dat er als volgt uit. De lijst begint in geheugencel 15.

geheugenmodel_namen

Indien we Esmee vervangen door Elia in de klaslijst, is het niet nodig een nieuwe lijst aan te maken.

We vervangen gewoon het geheugenadres op die plaats in de lijst zodat het wijst naar de string 'Elia' in plaats van 'Esmee'. Het is wel nodig een nieuwe string 'Elia' aan te maken.

studenten

geheugenmodel_namen_elia

Vergelijk de geheugencel op adres 18 in de twee tekeningen van het geheugen hierboven.

👀 Voorbeeld - Nieuwe leerlingen

De methode lijst.append(elem) voegt het element elem achteraan toe in de lijst.

Er zijn een aantal nieuwe leerlingen in de klas. De lijst met leerlingen van stagiair Sem moet bijgewerkt worden. Patrick en Simon komen er bij. Sem voegt één voor één Patrick en Simon toe:

namen = ['Aram','Bea','Danilo','Esmee','Finn','Inaya','Nina']
print(namen)
namen.append('Patrick')
namen.append('Simon')
print(namen)

🧐 Wist je dat…

to append Engels is voor toevoegen of aanhangen?

trailer

❓ Vraag

Wat is het verschil tussen lijst.func(arg) en func(lijst,arg)?

lijst.func(arg) en func(lijst, arg) betekenen eigenlijk hetzelfde: we vertellen de computer wat we met de lijst willen doen, maar dan op twee verschillende manieren. We noemen lijst.func(arg) ook wel eens een methode die op lijst wordt toegepast. In de functie func(lijst, arg) wordt die lijst als een extra parameter meegegeven.

💡 Hint

Als je een element toevoegt aan een lijst, voeg je dat achteraan toe. Patrick en Simon kunnen dus enkel worden toegevoegd met lst.append(elem) omdat hun voornaam alfabetisch achter de andere namen in de klaslijst komt.

Hierbij is lst de lijst (namen) waaraan een element wordt toegevoegd en elem het element (de naam) dat je wil toevoegen.

Indien je zelf wil kiezen op welke plaats een naam wordt toegevoegd, kan je lst.insert(index,elem) gebruiken.

💻 Programmeeroefening - Op de juiste plaats

Pas in de editor de code hieronder aan om een nieuwe leerling genaamd Elsie toe te voegen op de juiste plaats in de alfabetische klaslijst. Gebruik lst.insert(index,elem).

namen = ['Aram','Bea','Danilo','Esmee','Finn','Inaya','Nina']
# voeg Elsie toe op de juiste plaats in de lijst.
# print de aangepaste lijst van namen
print(namen)

👀 Voorbeeld - Nieuwe leerlingen: In 1 moeite

Het gebeurt wel vaker dat je meer dan één element moet toevoegen aan een lijst. Daarom bestaat de lst.extend(lst1) methode waaraan je een lijst (lst1) kan meegeven die dan in zijn geheel achteraan de oorspronkelijke lijst (lst) wordt toegevoegd.

Sem voegt Patrick en Simon in 1 keer toe:

namen = ['Aram','Bea','Danilo','Esmee','Finn','Inaya','Nina']
namen.extend(['Patrick', 'Simon'])
print(namen)

friendship