Lees de twee uiteinden
Laat edges de eerste en laatste waarde als tuple teruggeven.
Je houdt een lijst met uitstapjes bij. Er komt een bezoek bij, een bestemming verandert en de laatste afspraak vervalt. Met een lijst kun je die veranderingen op dezelfde verzameling uitvoeren, zodat de rest van je programma het bijgewerkte plan ziet.
Een lijst bewaart waarden in een bepaalde volgorde. Je maakt haar met vierkante haken, bijvoorbeeld ["museum", "park"]. De komma scheidt de elementen; hier zijn dat twee teksten.
Een index is de positie waarmee je één element kiest. Python begint bij nul: visits[0] leest het eerste element en visits[1] het tweede. Met visits[-1] lees je het laatste element, ongeacht de lengte van de lijst.
Lezen verandert de lijst niet. Een niet-bestaande positie geeft een IndexError: er staat geen element op die plek. De opdrachten met een eerste of laatste element krijgen daarom altijd een niet-lege lijst.
Een lijst is veranderbaar. Met plan[0] = "bibliotheek" vervang je een element van de bestaande lijst. Zo'n verandering aan een bestaand object heet mutatie.
Druk op Voorbeeld uitvoeren. Let apart op de retourwaarde van de functie en op de lijst na de aanroep: dat zijn twee verschillende dingen die je kunt controleren.
def update_plan(plan):
plan[0] = "bibliotheek"
plan.append("markt")
visits = ["museum", "park"]
result = update_plan(visits)
print(result)
print(visits)
removed = visits.pop()
print(removed)
print(visits)
print(visits[-1])None ['bibliotheek', 'park', 'markt'] markt ['bibliotheek', 'park'] park
De parameter plan verwijst tijdens de aanroep naar dezelfde lijst als visits. De functie hoeft die lijst dus niet terug te geven om haar te veranderen. De aanroeper ziet de verandering via zijn eigen naam.
| Handeling | Inhoud van de lijst daarna | Antwoord van de handeling |
|---|---|---|
| Eerste bezoek vervangen | bibliotheek, park | Geen apart antwoord |
append("markt") | bibliotheek, park, markt | None |
pop() | bibliotheek, park | "markt" |
De methode append voegt één element achteraan toe en geeft None terug. Dat betekent hier niet dat het toevoegen is mislukt. De gewijzigde lijst is het effect van de handeling.
De methode pop doet juist twee dingen: zij verwijdert het laatste element en geeft dat element terug. Bewaar haar resultaat wanneer je wilt weten wat is verwijderd. Een index zoals visits[-1] leest alleen en laat het element staan.
Je kent lokale namen uit de functiemodule. Hetzelfde onderscheid speelt bij lijsten: een naam aan een andere lijst koppelen is iets anders dan de bestaande lijst veranderen. Deze zelfstandige foutvariant toont een uitbreiding die buiten de functie verdwijnt.
def add_visit(plan):
plan = plan + ["markt"]
print(plan)
visits = ["museum", "park"]
add_visit(visits)
print(visits)['museum', 'park', 'markt'] ['museum', 'park']
Binnen de functie staan drie bezoeken, maar buiten de functie nog twee. plan + ["markt"] heeft een nieuwe lijst gemaakt en de toekenning koppelt alleen de lokale naam plan daaraan. De oorspronkelijke lijst bij de aanroeper is niet uitgebreid.
Kies daarom eerst het contract van je functie. Moet de aanroeper een wijziging aan zijn bestaande lijst zien, gebruik dan een handeling die die lijst verandert. Moet de functie een apart resultaat opleveren, dan kan een nieuwe lijst juist passend zijn.
De opdrachten laten je lezen, vervangen, toevoegen en verwijderen afzonderlijk oefenen. Bij veranderen zonder apart antwoord hoort de retourwaarde None; bij verwijderen vraagt de opdracht juist om het weggenomen element. De tests controleren zowel het antwoord als wat bij de aanroeper overblijft.
Bij een lijst met één element zijn de eerste en laatste waarde dezelfde. Na het verwijderen van dat element blijft een lege lijst over. Gebruik de afgesproken indices en methoden ook voor die kleine gevallen.
Laat edges de eerste en laatste waarde als tuple teruggeven.
Laat replace_first de eerste waarde vervangen en None teruggeven.
Laat append_item de lijst bij de aanroeper uitbreiden en None teruggeven.
Laat take_last het laatste element verwijderen en dat element teruggeven.
Hierna kies je delen van een lijst en onderzoek je wanneer twee namen dezelfde lijst delen.
Voer je code uit en ontdek
wat je hebt gemaakt.
Je hoeft het niet in één keer goed te doen. Na het uitvoeren zie je hier welke stappen al kloppen.