In Python is een lijst een geordende en veranderlijke verzameling van elementen. Het wordt gedefinieerd met vierkante haken [ ] en de elementen worden gescheiden door komma's. Lijsten kunnen elementen van verschillende datatypen bevatten, inclusief andere lijsten. Hier zijn enkele basiskenmerken en voorbeelden van lijsten in Python:
Kenmerken van lijsten:
Geordend: De elementen in een lijst behouden de volgorde waarin ze zijn toegevoegd.
Veranderlijk: Je kunt elementen in een lijst toevoegen, verwijderen of wijzigen.
Indexering: Je kunt individuele elementen in een lijst benaderen met behulp van een index (beginnend bij 0).
Verschillende datatypen: Lijsten kunnen elementen van verschillende datatypen bevatten.
De noodzaak (of het voordeel) van lijsten kan aangetoond worden met onderstaadnvoorbeeld:
Met onderstaande code kan een getal van 1 t/m 6 gegenereerd worden. Op dez manier kan je een dobbelsteen simuleren
import random
willekeurig_getal = random.randint(1, 6)
We gaan een script maken dat gaat controleren of deze getallen echt wel random zijn. Dit doen we door 10 000 keer een getal te genereren en te gaan kijken hoeveel keer elk van de 6 cijfers gegenereerd wordt.
Statischtisch zal elk cijfer (ongeveer) 1667 keer gegenereerd worden.
We gaan hier dus een lus moeten maken die 10 000 keer herhaald wordt. Het makkelijkst kan dit met een for-lus
for i in range(10000):
In deze lus gaan we het getal genereren (zie code boven).
Voor elke mogelijke getal moeten we bijhouden hoeveel keer dat dit getal gegenereerd is. Ik heb dus 6 variabelen nodig die ik aan het begin van het script ga gelijk stellen aan nul:
aantal_1 = 0
aantal_2 = 0
aantal_3 = 0
aantal_4 = 0
aantal_5 = 0
aantal_6 = 0
Tenslotte ga ik met een conditie telkens bij de juiste variabele ééntje moeten bijtellen
if willekeurig_getal == 1:
aantal_1 +=1
elif willekeurig_getal == 2:
aantal_2 +=1
elif willekeurig_getal == 3:
aantal_3 +=1
elif willekeurig_getal == 4:
aantal_4 +=1
elif willekeurig_getal == 5:
aantal_5 +=1
elif willekeurig_getal == 6:
aantal_6 +=1
En dit gaan we 10 000 keer herhalen waarna we de output geven:
Standaar zouden we de output geven als:
print("Resultaten na 10000 keer gooien:")
print("1:",aantal_1,"keer")
print("2:",aantal_2,"keer")
print("3:",aantal_3,"keer")
print("4:",aantal_4,"keer")
print("5:",aantal_5,"keer")
print("6:",aantal_6,"keer")
Vanaf Python 3.6 kun je f-strings gebruiken als een handige en leesbare manier om variabelen en expressies in een string op te nemen.
Binnen de f-string kun je variabelen en expressies direct tussen de {}-tekens plaatsen, en Python zal deze dynamisch evalueren en in de string invoegen.
Het gebruik van f-strings maakt de code leesbaarder en maakt het gemakkelijker om complexe strings samen te stellen.
print(f"1: {aantal_1} keer")
print(f"2: {aantal_2} keer")
print(f"3: {aantal_3} keer")
print(f"4: {aantal_4} keer")
print(f"5: {aantal_5} keer")
print(f"6: {aantal_6} keer")
Het gebruik van verschillende variabelen voor 6 verschillende nummer lukt nog wel. Willen we hetzelfde doen met de lotto-nummers, dan hebben we een probleem, want dan zit ik met 45 verschillende nummers. Een oplossing is het gebruik van lijsten.
Een lijst is geordend. We kunnen dus steeds het aantal keren dat een bal gevallen is achterhalen. Het eerste getal is voor bal met nummer, het tiende nummer voor bal met nummer, het twintigste voor bal .....
Willen wij de verschillende elementen (aantallen) individueel benaderen met hun index.
lotto[index]
De index wordt tussen rechte haken achter de naam van de lijst geplaatst
De index start vanaf nul, en omdat we 45 elementen hebben zal het laatste element van onze lijst index 44 hebben.
Met de index kunnen we individuele elementen benaderen. We hebben reeds besproken dat het eerste element index 0 heeft, en het volgende telkens een index die eentje hoger is.
Gebruiker we een index die niet in de lijst voorkomt, dan krijgen we een foutmelding.
Om dit te vermijden kan je controleren hoe lang de lijst is. Dit kan met de len( )-functie.
De len( )-functie geeft als retour-waarde het aantal elementen in een collectie. Dat wilt zeggen dat deze functie niet enkel kan gebruikt worden voor lijsten, maar ook voor strings, en andere colectie types.
Wanneer je met de index individuele elementen kan benaderen kan je deze ook individueel gaan veranderen.
In onderstaand voorbeeld gaan we de postcode, het derde element in de lijst, het element met index 2 veranderen
Je kan ook gebruik maken van een expressie om de waarde van een element te veranderen:
Je kan een element gaan zoeken op basis van zijn waarde.
Dit kan met <lijst>.index(<waarde>)
Als er een element gevonden is dat overeenkomt met <waarde> dan krijg je als retour de index van het eerste element dat ermee overeenkomt.
Als er geen element gevonden wordt dat overeenkomt met <waarde>, dan krijg je een foutmelding.
Je kan dit vermijden door eerst te controleren of er een element aanwezig is dat overeenkomt met <waarde>. Dit kan met de instructie: in
De algemene syntax is
<waarde> in <lijst>
De return waarde is True als <waarde> gevonden wordt, en False in het andere geval.
Voorbeeld:
fibo = [0,1,1,2,3,5,8,13,21]
print('lijst:',fibo)
ingave = int(input("Geef getal in: "))
if ingave in fibo:
plaats = fibo.index(ingave)
print(f'Het getal staat op plaats {plaats+1} en heeft index {plaats}.')
else:
print('Het getal komt niet voor in de lijst')