ID.nl logo
Zo kun je programmeren in Python - Deel 2
© Reshift Digital
Zekerheid & gemak

Zo kun je programmeren in Python - Deel 2

Na onze eerste kennismaking met Python is het tijd om wat complexere datastructuren te bekijken: lijsten en dictionary’s. We duiken ook in de structuur van strings, zodat je afzonderlijke letters kunt manipuleren. Start je Python-interpreter maar alvast op!

In de vorige les leerde je met drie datatypes in Python werken: int, float en str. Vooral int en float zijn vrij eenvoudige datatypes. Maar in veel programma’s heb je types met meer structuur nodig, we noemen dit ook wel datastructuren. In dit deel leer je met twee belangrijke datastructuren van Python werken.

Lijsten

In veel programma’s werk je niet met één specifiek gegeven, maar met een hele reeks. Een lijst (in Python list) is daarvoor ideaal. Zo maak je bijvoorbeeld een lijst met namen aan:

>>> namen = ['kees', 'jan', 'pieter', 'jan', 'joris', 'rob']>>> len(namen)

6

>>> lege_lijst = []

>>> len(lege_lijst)

0

De functie len, die we uit de vorige les kennen om de lengte van een string terug te geven, werkt ook op een lijst: dan krijg je het aantal elementen in die lijst.

Overigens kan een lijst elementen van verschillende types bevatten, zoals een float, twee strings en een int. Maar vaak heeft een lijst alleen elementen van hetzelfde type.

Functies, parameters en argumenten

Python deelt heel wat functionaliteit op in functies: stukjes code die een specifieke taak uitvoeren, zoals len om de lengte van een lijst of string op te vragen. Een functie kan een parameter hebben: een variabele waarmee de functie werkt en die als waarde het object krijgt dat je aan die functie doorgeeft. Dat object noemen we het argument van de functie. Een functie kan ook meerdere parameters (en dus argumenten) hebben. In deel 6 leer je je eigen functies definiëren en wordt dit allemaal nog veel duidelijker.

Elementen in een lijst

Python kent ook heel wat mogelijkheden om met de elementen in een lijst te werken. Zo vraag je eenvoudig een element uit de lijst op een specifieke positie (ook ‘index’ genoemd) op:

>>> namen[2]'pieter'

Merk op dat de positie in een lijst vanaf 0 begint te tellen: het eerste element is namen[0], het tweede namen[1], het derde namen[2] enzovoort. Je zou dan denken dat je het laatste element moet opvragen met:

>>> namen[len(namen)-1]'rob'

Dat werkt inderdaad, maar Python laat ook een negatieve positie toe, waarmee je vanachter in de lijst begint te tellen. Het laatste element heeft dan positie -1:

>>> namen[-1]'rob'>>> namen[-2]'joris'

Als je goed hebt opgelet, zie je dat de string ‘jan’ twee keer in bovenstaande lijst zit. Dat aantal keren kun je opvragen met de functie count:

>>> namen.count('jan')2>>> namen.count('pieter')1>>> namen.count('koen')0

Je kunt ook de positie van een element in een lijst opvragen:

>>> namen.index('jan')1>>> namen.index('pieter')2>>> namen.index('koen')Traceback (most recent call last):File "<stdin>", line 1, in <module>ValueError: 'koen' is not in list

Zoals je ziet krijg je een foutmelding (ValueError) als het gevraagde element zich niet in de lijst bevindt. Voor een element dat zich meerdere keren in de lijst bevindt, geeft de functie index alleen de eerste positie terug. Maar je kunt ook vragen om vanaf een specifieke positie te zoeken:

>>> namen.index('jan', 2)3

Een lijst veranderen

Als je een lijst hebt aangemaakt, kun je die nog altijd veranderen. In het eenvoudigste geval verander je bijvoorbeeld één element:

>>> namen['kees', 'jan', 'pieter', 'jan', 'joris', 'rob']>>> namen[1] = 'koen'>>> namen['kees', 'koen', 'pieter', 'jan', 'joris', 'rob']

Je kunt een lijst ook omdraaien of sorteren:

>>> namen.reverse()>>> namen['rob', 'joris', 'jan', 'pieter', 'koen', 'kees']>>> namen.sort()>>> namen['jan', 'joris', 'kees', 'koen', 'pieter', 'rob']

Verder kun je ook een element aan het einde van een lijst toevoegen, of op een specifieke positie tussen de andere elementen voegen:

>>> namen['jan', 'joris', 'kees', 'koen', 'pieter', 'rob']>>> namen.append('aniek')>>> namen['jan', 'joris', 'kees', 'koen', 'pieter', 'rob', 'aniek']>>> namen.insert(0, 'lies')>>> namen['lies', 'jan', 'joris', 'kees', 'koen', 'pieter', 'rob', 'aniek']>>> namen.insert(4, 'mireille')>>> namen['lies', 'jan', 'joris', 'kees', 'mireille', 'koen', 'pieter', 'rob', 'aniek']

Je kunt ook bestaande elementen verwijderen. Zo verwijder je met de functie remove(x) het eerste element waarvan de waarde gelijk is aan x:

>>> namen['lies', 'jan', 'joris', 'kees', 'mireille', 'koen', 'pieter', 'rob', 'aniek']>>> namen.remove('pieter')>>> namen['lies', 'jan', 'joris', 'kees', 'mireille', 'koen', 'rob', 'aniek']>>> namen.remove('pieter')Traceback (most recent call last):File "<stdin>", line 1, in <module>ValueError: list.remove(x): x not in list

Zoals je ziet, krijg je een foutmelding als je vraagt om een element te verwijderen dat niet in de lijst zit.

Je kunt ook een element op een gegeven positie verwijderen. Dat doe je met de functie pop:

>>> namen['lies', 'jan', 'joris', 'kees', 'mireille', 'koen', 'rob', 'aniek']>>> namen.pop(2)'joris'>>> namen['lies', 'jan', 'kees', 'mireille', 'koen', 'rob', 'aniek']

Als je goed hebt opgelet, zie je dat de functie pop niet alleen een element verwijdert, maar op de opdrachtregel ook als waarde het verwijderde element teruggeeft ('joris').

Snijden in een lijst

Python heeft een krachtige manier om een lijst in stukken te snijden: ‘slicing’. Herinner je de notatie [n] voor het n-de element? Met [n:] krijg je de elementen terug vanaf index n, met [:n] de elementen tot index n (niet inbegrepen) en met [m:n] de elementen van index m tot n (die laatste niet inbegrepen). Enkele voorbeelden maken dit duidelijk:

>>> namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']>>> namen[1:]['jan', 'kees', 'mireille', 'koen', 'rob']>>> namen[:4]['lies', 'jan', 'kees', 'mireille']>>> namen[1:4]['jan', 'kees', 'mireille']

Omdat Python begint te tellen vanaf 0 en in de beginpositie van een slice het element zelf meerekent maar in de eindpositie niet, is de notatie van slicing nogal verwarrend. Het helpt daarom om deze posities te beschouwen als de posities van de komma’s in de lijst, te tellen vanaf 1. Alles tussen de komma’s op die posities is dan de gevraagde slice. Neem bijvoorbeeld namen[1:4]. Omdat namen gelijk is aan ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob'], nemen we alles tussen de eerste en de vierde komma, dus van vóór 'jan' tot ná 'mireille', oftewel ['jan', 'kees', 'mireille'].

Slicing is ook een krachtige manier om een deel van een lijst te veranderen. Zo vervang je eenvoudig voorgaande slice in de lijst door een andere naam:

>>> namen['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']>>> namen[1:4] = ['bas']>>> namen['lies', 'bas', 'koen', 'rob']

Nog eens strings

In een string krijg je net zoals in een lijst toegang tot het n-de element met de notatie [n]. Zo krijg je met 'aniek'[1] het tweede teken van de string 'aniek', of de letter n. Ook slicing werkt bij een string: 'aniek'[1:4] is gelijk aan nie. Maar let op: in tegenstelling tot een lijst kun je een string niet veranderen. De poging 'aniek'[1:4] = 'r' geeft een foutmelding.

Dictionary’s

In een lijst heeft elk element als index zijn positie, zodat je eenvoudig het element op een specifieke positie kunt opvragen. Een andere datastructuur is de ‘dictionary’, die als index voor zijn elementen een sleutel gebruikt, vaak een string of een getal. Elke sleutel van de dictionary moet uniek zijn, zodat je eenvoudig de waarde die bij een specifieke sleutel hoort kunt opvragen.

Een voorbeeld maakt duidelijk hoe je met een dictionary werkt:

>>> scores = {'lies': 5, 'bas': 2, 'kees': 1, 'aniek': 3}>>> scores['aniek']3>>> scores['bert']Traceback (most recent call last):File "<stdin>", line 1, in <module>KeyError: 'bert'>>> len(scores)4

Op deze manier kun je eenvoudig de score van een persoon opvragen op basis van zijn of haar naam. Je ziet hier ook dat je een foutmelding krijgt als je een element opvraagt met een index die niet in de dictionary bestaat.

Een dictionary kun je net zoals een lijst veranderen. Je kunt de waarde bij een specifieke sleutel veranderen, maar je kunt even eenvoudig een nieuw element toevoegen: ken gewoon een waarde toe aan een nieuwe sleutel. Bijvoorbeeld:

>>> scores{'lies': 5, 'bas': 2, 'kees': 1, 'aniek': 3}>>> scores['lies'] += 1>>> scores{'lies': 6, 'bas': 2, 'kees': 1, 'aniek': 3}>>> scores['bert'] = 1>>> scores{'lies': 6, 'bas': 2, 'kees': 1, 'aniek': 3, 'bert': 1}

Een sleutel en de bijbehorende waarde uit de dictionary verwijderen, doe je met het speciale keyword del:

>>> scores{'lies': 6, 'bas': 2, 'kees': 1, 'aniek': 3, 'bert': 1}>>> del scores['kees']>>> scores{'lies': 6, 'bas': 2, 'aniek': 3, 'bert': 1}

Samenvatting

In dit deel zijn we lang stil blijven staan bij een van de meest gebruikte datastructuren in Python: de lijst. De kennis die je hebt opgedaan over lijsten, kun je voor heel wat andere datatypes in Python hergebruiken. Zo toonden we hoe de notatie voor een index en voor ‘slicing’ hetzelfde is bij een string. Een ander belangrijk datatype dat je in dit deel zag, is de dictionary, waarin je geen positie maar een sleutel als index gebruikt. In het volgende deel verlaten we de interactieve Python-sessies en schrijven we onze eerste programma’s.

Opdracht 1

Je hebt de volgende lijst met namen: >>> namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob', 'aniek'] Splits deze lijst in zijn laatste element en de rest van de lijst.

Uitwerking opdracht 1

*>>> namen ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob', 'aniek']

laatste_persoon = namen.pop() namen ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob'] laatste_persoon 'aniek'* Dit is een veel gebruikte toepassing van de functie pop(), die niet alleen het element op een specifieke index verwijdert, maar ook het verwijderde element teruggeeft. Waarschijnlijk heb je deze opdracht opgelost met: laatste_persoon = namen.pop(-1) Maar de -1 is niet nodig: zonder index geeft de functie pop het laatste element terug.

Opdracht 2

Haal uit een string alle tekens behalve het eerste en het laatste.

Uitwerking opdracht 2

*>>> naam = 'aniek'

naam[1:-1] 'nie'* Slicing werkt bij een string exact zoals bij een lijst. Bovendien kunnen we ook gebruikmaken van een negatieve index in slicing: -1 verwijst dan naar het laatste element. Omdat Python begint te tellen vanaf 0 en in de beginpositie van een slice het teken zelf meerekent maar in de eindpositie niet, verwijst de slice [1:-1] dus naar alle tekens in de string behalve het eerste en het laatste.

Cheatsheet

datastructuur: een datatype dat uit elementen bestaat die met elkaar samenhangen. dictionary: een datastructuur waarin je elementen opvraagt aan de hand van een unieke sleutel. index (in een lijst): positie van een element in een lijst, te beginnen vanaf 0. index (in een dictionary): sleutel van een element waarmee het uit een dictionary op te vragen is. lijst: een datastructuur waarin je elementen opvraagt aan de hand van hun positie. slicing: het in stukken snijden van een lijst of string.

▼ Volgende artikel
Eerste Fallout-seizoen tijdelijk gratis te zien
Huis

Eerste Fallout-seizoen tijdelijk gratis te zien

Het is tijdelijk mogelijk om het eerste seizoen van de Amazon Prime Video-serie Fallout geheel gratis te zien.

De Fallout-serie is normaliter alleen te zien door een Amazon Prime Video-abonnement af te sluiten, maar de komende tijd zal het bedrijf gratis de afleveringen van het eerste seizoen op YouTube uitbrengen. Op moment van schrijven staan de eerste twee afleveringen er op, en de komende dagen volgt de rest.

De gratis afleveringen kunnen via het YouTube-kanaal van Amazon Prime Video bekeken worden. Tot 12 februari kan het eerste seizoen gratis via YouTube bekeken worden.

De gratis afleveringen zijn duidelijk bedoeld als promotie voor de serie, waarvan het tweede seizoen nu bezig is op Amazon Prime Video. Op 1 februari zal de laatste aflevering van dat tweede seizoen op Amazon Prime Video verschijnen.

Watch on YouTube

Het succes van Fallout

In 2024 begon de fictieve Fallout-serie al op Amazon Prime Video, gebaseerd op de games van Bethesda. Met acteurs als Ella Purnell, Walton Goggins en Kyle MacLachlan wordt een alternatieve geschiedenis (en toekomst) geschetst waarbij de Verenigde Staten door een nucleaire winter geteisterd worden. Diverse samenlevingen houden het jarenlang vol in schuilkelders, en wanneer ze daar weer uit durven te komen, maken ze kennis met een aardoppervlakte die voorgoed veranderd is.

De serie bleek een grote hit en het eerste seizoen behaalde meer dan honderd miljoen kijkers. Ondertussen is al bevestigd dat er een derde seizoen komt - de opnames daarvan zullen in mei van start gaan.

Ook werkt Amazon aan een realityshow rondom Fallout, waarin deelnemers in een schuilkelder moeten leven en deel zullen nemen aan diverse spellen. Volgens de beschrijving "is het een spel van machtspatronen, populariteit en sociale strategieën waarbij uiteindelijk een gigantische geldprijs gewonnen kan worden". Verdere concrete detail zijn er nog niet, en het is ook niet duidelijk vanaf wanneer de realityshow op Amazon Prime Video te zien zal zijn.

Watch on YouTube
Nieuw op ID: het complete plaatje

Misschien valt het je op dat er vanaf nu ook berichten over games, films en series op onze site verschijnen. Dat is een bewuste stap. Wij geloven dat technologie niet stopt bij hardware; het gaat uiteindelijk om wat je ermee beleeft. Daarom combineren we onze expertise in tech nu met het laatste nieuws over entertainment. Dat doen we met de gezichten die mensen kennen van Power Unlimited, dé experts op het gebied van gaming en streaming. Zo helpen we je niet alleen aan de beste tv, smartphone of laptop, maar vertellen we je ook direct wat je erop moet kijken of spelen. Je vindt hier dus voortaan de ideale mix van hardware én content.

▼ Volgende artikel
AI-functies in Edge uitgelegd: editor, voorlezen en tabbladen organiseren
© Microsoft
Huis

AI-functies in Edge uitgelegd: editor, voorlezen en tabbladen organiseren

Het is logisch dat Microsoft Copilot verankerd zit in Edge. Hierbij gaat de browser steeds verder en verschijnen er steeds meer AI-functies op. Ze zijn minder prominent aanwezig dan bij sommige concurrenten, maar maken alledaagse taken net een tikje slimmer en makkelijker.

In dit artikel

Je maakt kennis met een aantal AI-functies in Microsoft Edge. Je leest hoe hardop voorlezen werkt (ook vanaf een gekozen stukje), hoe je tekst of complete pagina's laat vertalen en hoe de ingebouwde editor je spelling, grammatica en formuleringen aanscherpt. Ook ontdek je de Ai-themagenerator, waarmee je op basis van een korte prompt een nieuw uiterlijk maakt, en je ziet hoe tabbladen organiseren openstaande tabs automatisch groepeert voor meer overzicht.

 Lees ook: AI zonder programmeren: Zo bouw je je eigen chatbot

AI-gestuurde taalhulpmiddelen

Lezen, luisteren, vertalen of schrijven: Edge schuift steeds meer slimme taalhulpen naar voren. Met een druk op Ctrl+Shift+U laat je een webpagina hardop voorlezen. Een smalle werkbalk verschijnt bovenaan, waarin je niet alleen kunt starten of pauzeren, maar ook de stem en het leestempo naar smaak aanpast. Je hoeft niet de hele pagina voor te laten lezen. Selecteer een passage, klik met de rechtermuisknop en kies Doorgaan met hardop voorlezen vanaf hier. Ook voor vreemde talen hoef je geen externe tools meer aan te spreken. Je laat ofwel een stukje tekst, ofwel de volledige pagina meteen in het Nederlands vertalen. Nog praktischer wordt het wanneer je zelf iets schrijft. Onder Instellingen / Talen kun je Hulp bij schrijven activeren. Vanaf dat moment houdt Edge je spelling en grammatica in de gaten en zie je suggesties direct oplichten in de tekst. Dankzij de ingebouwde Editor, die AI op de achtergrond inzet, worden je zinnen niet alleen foutvrij, maar vaak ook net wat scherper.

Boven de webpagina zie je de afspeelknoppen en kun je de stem en voorleessnelheid regelen.

AI-themagenerator

Via de Instellingen onder Uiterlijk vind je nu een AI-themagenerator die op basis van een eenvoudige prompt een volledig nieuw thema creëert. Typ bijvoorbeeld een beschrijving van een sfeer, een kleurpalet of zelfs een fantasiebeeld, en binnen een paar minuten staat er een verrassend ontwerp klaar. Heb je geen inspiratie? Dan doet de knop Verras me het werk voor jou en zal de AI iets geheel onverwachts bedenken. Met één klik op Thema toepassen geef je de browser meteen een frisse, persoonlijke uitstraling.

Je krijgt een voorvertoning van het nieuwe thema en een kleurenschema.

Automatisch tabbladen organiseren

Wie vaak tientallen webpagina's tegelijk open heeft staan, weet hoe onoverzichtelijk die tabs kunnen worden. Met de functie Tabbladen organiseren breng je weer structuur in die chaos. Helemaal linksboven, onder de knop Tabblad actiemenu, vind je de nodige opties. Zo kun je bijvoorbeeld overschakelen naar verticale tabbladen of eerder gesloten tabbladen opnieuw oproepen. In hetzelfde menu duikt ook de functie Tabbladen organiseren op. Als je hierop klikt, verschijnt er een pop-upvenster dat aangeeft welke tabbladen gegroepeerd zullen worden, zodat je browserscherm meteen een stuk overzichtelijker oogt.

De AI toont eerst hoe hij de tabbladen zal organiseren.

Drie lekkere Copilot+-laptops


Werk je veel met foto- en videobewerking of andere zware klussen, dan zit je goed met deze ASUS ProArt P16 OLED Copilot+PC H7606WP-RJ129X. Door de combinatie van een AMD Ryzen AI 9-chip en 32 GB werkgeheugen blijf je vlot werken, ook als je tegelijk exporteert, rendert en meerdere programma's open hebt. Het OLED-scherm laat diepe zwarttinten en veel detail in schaduwen zien, en met het touchscreen maak je snel aantekeningen of sleep je makkelijker door je tijdlijn.

De Acer Aspire 14 AI A14-52M-56CK is gemaakt voor dagelijks werk onderweg: compact, 1,4 kg en groot genoeg om comfortabel te typen en te multitasken. De Intel Core Ultra 5-processor en 16 GB geheugen houden Office, veel tabbladen en videobellen soepel, terwijl 512 GB opslag ruimte geeft voor documenten en mediabestanden. Handig is dat Acer het simpel houdt: geen touchscreen, dus je leunt op toetsenbord en touchpad. Met HDMI sluit je snel een extra scherm aan en via de 3,5mm-poort kun je bedraad luisteren of vergaderen zonder gedoe met koppelen.

Wil je een licht en flexibel systeem dat ook als tablet werkt, dan past de Microsoft Surface Pro 11 (wifi 7, 512 GB) echt wat voor jou. Het 13-inch touchscreen en het 2-in-1 ontwerp maken hem handig voor notities, schetsen en werken onderweg, zeker als je een Surface Slim Pen erbij neemt. De Snapdragon X Plus met 45 TOPS is gericht op AI-taken: Copilot kan je helpen met tekst, samenvattingen en het omzetten van een Word-bestand naar een PowerPoint, terwijl de chip tijdens gebruik leert en taken soepeler laat aanvoelen. Reken voor onderweg op een lange adem met een opgegeven accuduur tot 14 uur, en met wifi 7 heb je een snelle draadloze basis als je netwerk dat ondersteunt.