{"id":6164,"date":"2012-11-05T20:32:22","date_gmt":"2012-11-06T01:32:22","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=6164"},"modified":"2019-03-05T06:02:26","modified_gmt":"2019-03-05T11:02:26","slug":"13-lists-arrays-nl","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/13-lists-arrays-nl\/","title":{"rendered":"13: Lijsten (Arrays)"},"content":{"rendered":"<p>Een\u00a0<strong>lijst<\/strong>\u00a0(Eng.: <em>list<\/em>) in Python (in vele andere programmeertalen een\u00a0<strong><em>array<\/em><\/strong> genoemd)\u00a0is een reeks van meerdere variabelen met een naam. In plaats van een programma te schrijven met vele variabelen\u00a0<code>x0<\/code>, <code>x1<\/code>, <code>x2<\/code>, \u2026 kun je een variabele\u00a0<code>x<\/code>\u00a0defini\u00ebren en de elementen ervan weergeven door middel van\u00a0<code>x[0]<\/code>, <code>x[1]<\/code>, <code>x[2]<\/code>, enz. Belangrijker, je kunt uitdrukkingen en variabelen tussen de rechte haken zetten, zoals\u00a0<code>x[i]<\/code> en\u00a0<code>x[i+1]<\/code>. Dit stelt ons in staat met willekeurig grote verzamelingen data te werken terwijl we er slechts een klein stukje code voor nodig hebben.<\/p>\n<p>E\u00e9n manier om een lijst te cre\u00ebren die een gegeven reeks van waarden bevat, is door de verschillende waarden tussen rechte haken te zetten, gescheiden door een komma:<\/p>\n<pre>myList = [\"de eerste waarde van de lijst\", 1999, 4.5]<\/pre>Dit cre\u00ebert een lijst van lengte 3, en kent een <em>verwijzing<\/em> naar de lijst toe aan variable <code>myList<\/code>. Ieder element van de lijst heeft een rangnummer,\u00a0<strong>index\u00a0<\/strong>genaamd: het eerste element heeft index 0, het volgende element index 1, enzovoort. De individuele variabelen die de lijst vormen hebben als naam<\/p>\n<p><code>\u00ablistName\u00bb[\u00abindexNumber\u00bb]<\/code><\/p>\n<p>Zo is in het voorbeeld\u00a0<code>myList[0]<\/code>\u00a0een variabele met waarde\u00a0<code>\"de eerste waarde van de lijst\"<\/code> en\u00a0<code>print(myList[2])<\/code> <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=myList%20%3D%20%5B%22de%20eerste%20waarde%20van%20de%20lijst%22%2C%201999%2C%204.5%5D%0Aprint%28myList%5B2%5D%29\" target=\"_blank\">zal<\/a> <code>4.5 <\/code>afdrukken. Je kunt ook de hele lijst printen:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform0\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox0'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Aanpassen en afdrukken van een lijst.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ngetallen = ['nul', 'een', 'twee']\ngetallen[0] = 'niks'\nprint(getallen)<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse0\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"0\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"8bf423660bdc079f498a37e783da00b2\"\/>\n<div id='pbresults0' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit0\").value = \"Run program\";document.getElementById(\"inputInUse0\").value = \"N\";<\/script>\n<\/p>\n<p>Zoals je kunt zien, wordt\u00a0<code>numbers[0]<\/code> behandeld alsof het een variabele is: je kunt de waarde op die index wijzigen.<\/p>\n<p>Probeer te voorspellen wat de inhoud van\u00a0<code>mijnLijst<\/code> is na uitvoering van het volgende programma. Voer het programma vervolgens stap voor stap uit.<br \/>\n<iframe width='100%' height='480' frameborder='0' scrolling='no' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/OnlinePythonTutor3-cemc\/iframe-embed.html#code=mijnLijst+%3D+%5B1%2C+10%2C+100%2C+1000%5D%0Afor+i+in+range%280%2C+2%29%3A%0A++mijnLijst%5Bi%5D+%3D+2%2AmijnLijst%5Bi%5D%2Bi&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=350&rightStdout=1'><\/iframe><\/p>\n<div class='pybox modeNeutral' id='pybox1'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Multiple Choice Exercise: <\/span><span class='title'>Meta-Stuff<\/span><\/div><div>Wat is de output van het volgende programmaatje? <\/p>\n<pre>stuff = [2, 25, 80, 12]<br\/>stuff[stuff[0]] = stuff[3]<br\/>print(stuff)<\/pre> <\/div><label>Your choice: <\/label><select id=\"pyselect1\"><option value=\"d\" selected>Select one<\/option><option value=\"w\">[2, 25, 80, 80]<\/option><option value=\"r\">[2, 25, 12, 12]<\/option><option value=\"w\">Dit programmaatje gaf een fout.<\/option><option value=\"w\">[12, 25, 80, 12]<\/option><option value=\"w\">[2, 25, 80, 12]<\/option><\/select><div class='pyboxbuttons'><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"13.indexindex\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick='pbMultiCheck(1)'\/><\/div><div class=\"pbresults\" id=\"pyMultiResults1\"><\/div><div class=\"epilogue\">Correct! Kijk naar de toekenningsopdracht (de tweede regel). De waarde van <code>stuff[3]<\/code> aan de rechterkant is <code>12<\/code>. Aan de linkerkant is <code>stuff[0]<\/code> gelijk aan <code>2<\/code>,  dus is <code>stuff[stuff[0]]<\/code> hetzelfde als de variabele <code>stuff[2]<\/code>. De waarde van deze variabele is veranderd (van <code>80<\/code>) in <code>12<\/code>.<\/div><\/div>\n<p><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> Wat in Python een\u00a0<strong>lijst<\/strong> wordt genoemd wordt in de meeste andere programmeertalen een\u00a0<strong>array<\/strong>\u00a0genoemd. <\/span><\/td><\/table><\/p>\n<h3>Een gebruikelijke fout<\/h3>\n<p>Wanneer je in Python naar een index vraagt die<span style=\"font-weight: 300;\">\u00a0niet bestaat, krijg je een foutmelding:<\/span><\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox2'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Out-of-range error.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nmyList=[1, 2, 4, 8]\nprint(myList[4])<\/textarea><\/div>\n<div id='pbhistory2' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit2' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(2)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(2,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse2\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"2\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"d236bc08f9f6bf1c1ceac57fa1675129\"\/>\n<div id='pbresults2' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit2\").value = \"Run program\";document.getElementById(\"inputInUse2\").value = \"N\";<\/script>\n<\/p>\n<p>Omdat in bovenstaand voorbeeld\u00a0<code>myList<\/code> lengte 4 heeft en de eerste index 0 is, en de grootst mogelijke index 3 is. Vragen naar een element met index van 4, 5, of nog groter heeft deze foutmelding tot gevolg.<\/p>\n<h2>Nuttige operaties<\/h2>\n<h3>De lengte van een lijst: <code>len(\u00ablist\u00bb)<\/code><\/h3>\n<p>Om het aantal elementen in een lijst vast te stellen, kun je de functie\u00a0<code>len()<\/code>\u00a0toepassen op de lijst. Kijk hoe \u00a0<code>range<\/code>\u00a0wordt gebruikt in het volgende voorbeeld.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform3\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox3'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Het vaststellen van de lengte van een lijst en het gebruik ervan om de lijst te doorlopen.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nmyList = [3, 12, \"pizza\", 3, 4]\nprint(\"myList heeft lengte\", len(myList))\nfor i in range(0, len(myList)):\n  print(\"element met index\", i, \":\", myList[i])<\/textarea><\/div>\n<div id='pbhistory3' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit3' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(3)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(3,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse3\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"3\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"bea4d916065801e80bea396f51687559\"\/>\n<div id='pbresults3' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit3\").value = \"Run program\";document.getElementById(\"inputInUse3\").value = \"N\";<\/script>\n<\/p>\n<p>Het is gebruikelijk om\u00a0<code>len<\/code>\u00a0te gebruiken om te kunnen werken met lijsten van willekeurige lengte, zoals in het voorbeeld hierboven, en in het volgende voorbeeld.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform4\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox4'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>De aap in het midden<\/span><\/div>Schrijf een functie\u00a0<code>middle(L)<\/code>\u00a0met als argument een lijst\u00a0<code>L<\/code>, en dat het element teruggeeft dat de middelste (<em>middle)<\/em> positie inneemt in\u00a0<code>L<\/code>. (Om zeker te weten dat het midden bestaat, moet je aannemen dat\u00a0<code>L<\/code>\u00a0een oneven lengte heeft.) Dus geeft\u00a0<code>middle([8, 0, 100, 12, 1])<\/code>\u00a0het getal\u00a0<code>100<\/code>\u00a0terug, want het staat precies in het midden van de lijst.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=20   class='pyboxCode RW'>\ndef...\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory4' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput4\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode4' value='def...\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit4' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch4\" value=\"Input Switch\" onclick=\"pbInputSwitch(4,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(4)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(4,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect4' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(4,'13.middle')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(4,descape($('#defaultCode4').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(4);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse4\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"4\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"1d56da7609a626499158eeff44b699c2\"\/>\n<div id='pbresults4' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(4);});pbInputSwitch(4,\"Y\");<\/script>\n<\/p>\n<h3>Zijn lijsten hetzelfde als strings?<\/h3>\n<p>Je kunt hebben opgemerkt dat de operaties die toepasbaar zijn op lijsten lijken op die welke toepasbaar zijn op strings: beide kunnen als invoer dienen voor de functie\u00a0<code>len()<\/code>, en beide kennen\u00a0<code>X[\u00abindex\u00bb]<\/code>\u00a0om individuele elementen te benoemen. Lijsten en strings hebben inderdaad veel gemeenschappelijk: het zijn beiden \u00a0\"<a href=\"http:\/\/docs.python.org\/py3k\/library\/stdtypes.html?highlight=sequence#sequence-types-str-bytes-bytearray-list-tuple-range\">rij-types<\/a>\" in Python. Een belangrijk verschil is dat de individuele karakters in strings niet kunnen worden aangepast.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform5\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox5'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Fout veroorzaakt door te proberen een waarde toe te kennen aan een karakter in een string.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode5' id='usercode5'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nword='slack'\nprint(word, word[1])\nword[1]='n'<\/textarea><\/div>\n<div id='pbhistory5' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit5' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(5)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(5,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse5\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"5\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"071e91b26fabcbb7947f2acafc8ec3ec\"\/>\n<div id='pbresults5' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit5\").value = \"Run program\";document.getElementById(\"inputInUse5\").value = \"N\";<\/script>\n<\/p>\n<p>Het is om die reden dat lijsten <i>veranderbaar<\/i>\u00a0worden genoemd en strings <em>onveranderbaar<\/em>; je krijgt hier nog wat meer informatie over in les 17.<\/p>\n<h3>Samenvoegen en Creatie<\/h3>\n<p>Van de\u00a0<a href=\"\/7a-strings\/\">les<\/a>\u00a0over het <code>str<\/code>-type, zul je je wellicht herinneren dat je\u00a0<code>+<\/code>\u00a0kunt gebruiken om twee strings samen te voegen (Eng.:\u00a0<em>concatenate<\/em>). Hetzelfde kan met lijsten:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform6\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox6'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Lijsten aan elkaar koppelen met <code>+<\/code>.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode6' id='usercode6'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\nlistA = [3, 'go', 7.1]\nlistB = [4, 'hi', 1]\nlistC = listA + listB\nprint(len(listC))\nprint(listC)<\/textarea><\/div>\n<div id='pbhistory6' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit6' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(6)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(6,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse6\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"6\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"9de0c01c5030f213b37d8ba3491ec8f8\"\/>\n<div id='pbresults6' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit6\").value = \"Run program\";document.getElementById(\"inputInUse6\").value = \"N\";<\/script>\n<\/p>\n<p>Evenzo kun je het symbool <code>*<\/code>\u00a0voor vermenigvuldigen gebruiken om een lijst herhaald uit te breiden. Dit is nuttig om een nieuwe lijst te maken van een gewenste lengte.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform7\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox7'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Using\u00a0<code><code>*<\/code><\/code>.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode7' id='usercode7'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nmyPhoneNumber = [9, 6, 7] + [1]*4\nprint(myPhoneNumber)\nnewEmptyList = [0]*20\nprint(newEmptyList)<\/textarea><\/div>\n<div id='pbhistory7' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit7' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(7)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(7,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse7\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"7\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"b3108d3ef8326dc1609d500870b8d584\"\/>\n<div id='pbresults7' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit7\").value = \"Run program\";document.getElementById(\"inputInUse7\").value = \"N\";<\/script>\n<\/p>\n<p>Om de volgende opgave te kunnen oplossen gebruik je \u00e9\u00e9n van de operatoren die we zojuist hebben ge\u00efntroduceerd en een <code>for<\/code>-lus.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform8\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox8'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Natuurlijke getallen<\/span><\/div>`schrijf een functie\u00a0<code>naturalNumbers<\/code>\u00a0die als invoer een positief geheel getal \u00a0<code>n<\/code>\u00a0heeft en als resultaat de\u00a0lijst <code>[1, 2, ...]<\/code>\u00a0met daarin de eerste\u00a0<code>n<\/code> natuurlijke getallen geeft.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode8' id='usercode8'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory8' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput8\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit8' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch8\" value=\"Input Switch\" onclick=\"pbInputSwitch(8,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(8)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(8,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect8' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(8,'13.natural')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(8);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse8\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"8\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"a3c19286f3f6499924f59764d7ad79f5\"\/>\n<div id='pbresults8' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(8);});pbInputSwitch(8,\"Y\");<\/script>\n<\/p>\n<h3>Einde van de regel: negatieve indices<\/h3>\n<p>Voor het laatste element van een lijst gebruik je:<\/p>\n<p><code>\u00ablistName\u00bb[-1]<\/code><\/p>\n<p>Meer in het algemeen, geeft\u00a0<code>L[-k]<\/code>\u00a0het\u00a0<code>kde<\/code>\u00a0element \u00a0vanaf het einde van de lijst; Python gebruikt dit intern door een vertaling in\u00a0<code>L[len(L)-k]<\/code>. Dit werkt ook voor strings!<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform9\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox9'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Palindroom<\/span><\/div>Een\u00a0<em>palindroom<\/em>\u00a0is een woord dat gespeld van voren naar achteren hetzelfde is als van achteren naar voren. Bijvoorbeeld: het Engelse woord,  <code>racecar<\/code>  is een palindroom: de eerste en de laatste letter (r) zijn hetzelfde, de tweede en de op de twee na laatste letter (a) zijn hetzelfde, enz. Schrijf een functie\u00a0<code>isPalindrome(S)<\/code> dat een string\u00a0<code>S<\/code> als argument neemt, en\u00a0<code>True<\/code>\u00a0teruggeeft wanneer de string een palindroom is en\u00a0<code>False<\/code>\u00a0wanneer dat niet het geval is.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode9' id='usercode9'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory9' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput9\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit9' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch9\" value=\"Input Switch\" onclick=\"pbInputSwitch(9,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(9)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(9,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect9' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(9,'13.palindrome')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(9);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse9\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"9\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"0e95ec4dfe5f65322417373aa6f23f9f\"\/>\n<div id='pbresults9' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(9);});pbInputSwitch(9,\"Y\");<\/script>\n<\/p>\n<h3><code>max<\/code>\u00a0en\u00a0<code>sum<\/code><\/h3>\n<p>De functie\u00a0<code>max<\/code>\u00a0die we eerder hebben gezien kan ook toegepast worden op een lijst met getallen: het geeft het grootste getal in de lijst terug. Evenzo geeft de functie\u00a0<code>sum(L)<\/code>\u00a0de som van de elementen van de lijst\u00a0<code>L<\/code> terug.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform10\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox10'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode10' id='usercode10'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nlist = [3, 10, 4, 9, 0]\nprint(sum(list))\nprint(max(list))<\/textarea><\/div>\n<div id='pbhistory10' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit10' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(10)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(10,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse10\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"10\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"8391f798f13bdcc5e3debef1c0636f8c\"\/>\n<div id='pbresults10' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit10\").value = \"Run program\";document.getElementById(\"inputInUse10\").value = \"N\";<\/script>\n<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform11\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox11'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Product<\/span><\/div>Definieer een functie\u00a0<code>prod(L)<\/code>\u00a0die het product van de elementen van een lijst\u00a0<code>L<\/code>\u00a0geeft.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode11' id='usercode11'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory11' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput11\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit11' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch11\" value=\"Input Switch\" onclick=\"pbInputSwitch(11,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(11)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(11,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect11' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(11,'13.product')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(11);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse11\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"11\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"950b81c2774eed4e8ee18e6885d7450c\"\/>\n<div id='pbresults11' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(11);});pbInputSwitch(11,\"Y\");<\/script>\n<\/p>\n<h3>Een lijst doorlopen<\/h3>\n<p>Het is zeer gebruikelijk (zoals in de vorige oefening) om elke waarde van een lijst te doorlopen. Python heeft daarvoor een afkorting waarmee dat kan, meestal een <i>\"voor alle\"-lus<\/i> (Eng.:\u00a0<em>for-each loop<\/em>) genoemd. Specifiek, wanneer L een lijst is, dan doet<\/p>\n<pre>for x in L:\r\n  \u00ablichaam\u00bb<\/pre>het volgende: eerst wordt\u00a0<code>x<\/code>\u00a0gelijkgesteld aan de eerste waarde \u00a0van \u00a0<code>L<\/code> en wordt het lichaam uitgevoerd; daarna wordt\u00a0<code>x<\/code>\u00a0gelijkgesteld aan de tweede waarde van\u00a0<code>L<\/code>\u00a0en het lichaam uitgevoerd; dit wordt vervolgd voor alle elementen van\u00a0<code>L<\/code>.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform12\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox12'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'><code>for in<\/code><\/span><\/div>Definieer de functie\u00a0<code>prod(L)<\/code>\u00a0zoals eerder, maar gebruik deze nieuwe vorm van de lus.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode12' id='usercode12'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory12' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput12\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit12' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch12\" value=\"Input Switch\" onclick=\"pbInputSwitch(12,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(12)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(12,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect12' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(12,'13.foreach')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(12);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse12\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"12\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"9ce3c28d9fba6297a35bc9d80720b66a\"\/>\n<div id='pbresults12' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(12);});pbInputSwitch(12,\"Y\");<\/script>\n<\/p>\n<p>\"Voor alle\"-lussen werken ook met strings: probeer<code><a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=for%20char%20in%20%22hello%22%3A%20print%28char%29\" target=\"_blank\">for char in \"hello\"<\/a><\/code>.<\/p>\n<p><em>Goed gedaan! je kunt doorgaan naar de volgende les of probeer als bonus enkele van de oefeningen hieronder.<\/em><\/p>\n<hr \/>\n<p><div class='pybox modeNeutral' id='pybox13'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Short Answer Exercise: <\/span><span class='title'>Mystery Function<\/span><\/div>Voor welke waarde van\u00a0<code>x<\/code>\u00a0zal\u00a0<code>mystery(x)<\/code>\u00a0oneindig lang voortduren? <\/p>\n<pre>def mystery(x):<br\/>  a = [0, 4, 0, 3, 2]<br\/>  while x &gt; 0:<br\/>    x = a[x]<br\/>  return \"Done\"<\/pre><label for=\"pyShortAnswer13\">Your answer: <\/label><input type=\"text\" onkeypress=\"{if (event.keyCode==13) pbShortCheck(13)}\" id=\"pyShortAnswer13\"><div class=\"pyboxbuttons\"><input type=\"hidden\" name=\"type\" value=\"trimmableString\"\/><input type=\"hidden\" name=\"correct\" value=\"3\"\/><input type=\"hidden\" name=\"slug\" value=\"13.mystery\"\/><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick = 'pbShortCheck(13)'\/><\/div><div class=\"pbresults\" id=\"pyShortResults13\"><\/div><div class=\"epilogue\">Correct!<\/div><\/div>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform14\" method=\"POST\">\n<div class='pybox modeNeutral scramble' id='pybox14'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Scramble Exercise: <\/span><span class='title'>\u00e0 la Mode<\/span><\/div>De\u00a0<em>modus <\/em>van een lijst is het element dat het vaakst voorkomt. Verbeter het volgende programma zodanig dat\u00a0<code>mode(L)<\/code>\u00a0de modus opspoort. Neem aan dat de lijst\u00a0<code>L<\/code>\u00a0bestaat uit getallen 0 tot en met 9. (In onze tests zijn er nooit twee getallen die beide maximaal voorkomen.) <ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble14\">\n <li class=\"pyscramble\">      return i<\/li>\n <li class=\"pyscramble\">  for i in L:<\/li>\n <li class=\"pyscramble\">  for i in range(0, 10):<\/li>\n <li class=\"pyscramble\">    if frequency[i]==max(frequency):<\/li>\n <li class=\"pyscramble\">  frequency = [0]*10<\/li>\n <li class=\"pyscramble\">def mode(L):<\/li>\n <li class=\"pyscramble\">    frequency[i] = frequency[i] + 1<\/li>\n<\/ul>\n<input type='hidden' id='usercode14' name='usercode14'\/>\n<div id='pbhistory14' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit14' value=' '\/><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse14\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"14\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"eb28fafe2e15b7d63b2120819163c0b8\"\/>\n<div id='pbresults14' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit14\").value = \"Run program\";document.getElementById(\"inputInUse14\").value = \"N\";<\/script>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Een\u00a0lijst\u00a0(Eng.: list) in Python (in vele andere programmeertalen een\u00a0array genoemd)\u00a0is een reeks van meerdere variabelen met een naam. In plaats van een programma te schrijven met vele variabelen\u00a0x0, x1, x2, \u2026 kun je een variabele\u00a0x\u00a0defini\u00ebren en de elementen ervan weergeven &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/13-lists-arrays-nl\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6164","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/comments?post=6164"}],"version-history":[{"count":21,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6164\/revisions"}],"predecessor-version":[{"id":11223,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6164\/revisions\/11223"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=6164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}