Hoofdstuk 3 - Introductie van Lijsten
01 - Wat is een lijst?
- Een lijst is een verzameling items in een bepaalde volgorde
- Items in een lijst hoeven niet op een bepaalde manier gerelateerd te zijn
- De lijst wordt toegewezen aan een variabele
- Omdat een lijst meestal meer dan één item bevat is de naam van de variabele vaak ook in meervoud
cars = ['Land Rover','BMW','Honda','Mercedes','Audi']
print(cars)
['Land Rover', 'BMW', 'Honda', 'Mercedes', 'Audi']
items = ['Pasta', 21, "gras", 18-6, 'Honda ' + 'Max',['Mercedes','Ferrari']]
print(items)
['Pasta', 21, 'gras', 12, 'Honda Max', ['Mercedes', 'Ferrari']]
In andere programmeertalen is een lijst ook bekend onder de naam dynamic array.
- Lijsten worden gebruikt in praktisch elke applicatie: bij het maken van spellen, het ophalen van gegevens uit een database, het verwerken van data via een API of het realtime aanpassen van grafieken op een website.
02 - Items in een lijst benaderen
- Lijsten zijn geordende verzamelingen
- Elk item heeft een indexwaarde waarmee je het kan aanspreken
- Om een item te benaderen vermeld je de variabelenaam van de lijst + het indexnummer
- Indexnummers van de lijst plaats je tussen brackets [ ]
cars = ['Land Rover','BMW','Honda','Mercedes','Audi']
print(cars[0])
Land Rover
Als we slechts één item uit de lijst vragen, geeft Python het weer zonder brackets
- Als een lijst een string bevat kun je daar string-methoden op toepassen
cars = ['Land Rover','BMW','Honda','Mercedes','Audi']
print(cars[3].upper())
MERCEDES
- Het eerste item in een lijst heeft altijd indexwaarde 0
- Het laatste item in een lijst heeft altijd indexwaarde -1 (het één na laatste item is -2, enz.)
cars = ['Land Rover','BMW','Honda','Mercedes','Audi']
print("Een " + cars[-1].title() + " is in Duitsland veel goedkoper!")
Een Audi is in Duitsland veel goedkoper!
Een bereik selecteren uit een lijst
- Je kunt ook een bereik selecteren uit een lijst door de start- en eind-positie op te geven
- Tussen de start- en eind-positie staat een dubbele punt
- De start positie is inclusief het item
- De eind positie is exclusief het item
cars = ['Land Rover', 'BMW', 'Ferrari' ,'Aston Martin', 'McLaren', 'Honda', 'Mercedes', 'Audi']
expensive_cars = cars[2:-3]
print(expensive_cars)
['Ferrari', 'Aston Martin', 'McLaren']
Meer voorbeelden in het volgende hoofdstuk
03 - Items Wijzigen
- Lijsten worden veel gebruikt en zijn doorgaans dynamisch
- Dynamisch wil zeggen dat er items worden toegevoegd, gewijzigd of verwijderd
- Het wijzigen van een item in een lijst heeft een vergelijkbare syntax voor het benaderen van een item
- Om een item te wijzigen gebruik je de variabelenaam van de lijst + het indexnummer
cars = ['Land Rover','BMW','Honda','Mercedes','Audi']
print(cars[0])
Land Rover
cars = ['Land Rover','BMW','Honda','Mercedes','Audi']
cars[0] = 'Lamborghini'
print(cars)
['Lamborghini', 'BMW', 'Honda', 'Mercedes', 'Audi']
04 - Items Toevoegen
- Het meest eenvoudig om items aan een lijst toe te voegen is met de .append( )-methode
- Met de .append( )-methode wordt een item aan het einde van een lijst toegevoegd
cars = ['Lamborghini','BMW','Honda','Mercedes','Audi']
cars.append('Spyker')
print(cars)
['Lamborghini', 'BMW', 'Honda', 'Mercedes', 'Audi', 'Spyker']
- Het is goed mogelijk om in een programma te beginnen met een lege lijst en deze gaandeweg te vullen
motors = []
motors.append('Yamaha')
motors.append('Aprilia')
motors.append('KTM')
print(motors)
['Yamaha', 'Aprilia', 'KTM']
- Om een item in het midden van de lijst toe te voegen kan de .insert( )-methode worden gebruikt
- Bij gebruik van de .insert( )-methode is het nodig om de indexpositie mee te geven
motors = []
motors.append('Yamaha')
motors.append('Aprilia')
motors.append('KTM')
motors.insert(1, 'Honda')
print(motors)
['Yamaha', 'Honda', 'Aprilia', 'KTM']
05 - Items Verwijderen
- Je kunt een item uit een lijst verwijderen op basis van zijn positie of op basis van zijn waarde
- Een item verwijderen op basis van een indexnummer kan met een del statement
- Een verwijderd item met een del statement kan niet meer gebruikt worden
motors = ['Yamaha','Aprilia','KTM','Honda']
del motors[2]
print(motors)
['Yamaha', 'Aprilia', 'Honda']
- De .pop( )-methode verwijdert het laatste item uit een lijst, maar je kunt na het verwijderen nog met het item aan de slag
- De laatste waarde die je uit een lijst verwijdert met .pop( ) kan worden opgeslagen in een variabele
motors = ['Yamaha','Aprilia','KTM','Honda']
last_item = motors.pop()
print(motors)
print(last_item)
['Yamaha', 'Aprilia', 'KTM']
Honda
- Met de .pop( )-methode kan ook een specifiek item uit een lijst gehaald worden wanneer er ook een index wordt meegegeven
motors = ['Yamaha', 'Aprilia', 'KTM', 'Honda']
best_item = motors.pop(2)
print(motors)
print(best_item)
['Yamaha', 'Aprilia', 'Honda']
KTM
- Een item verwijderen op basis van de letterlijke waarde kan met de methode .remove( )
motors = ['Yamaha','Aprilia','KTM','Honda']
print(motors)
expensive = 'Aprilia'
motors.remove(expensive)
print(expensive)
print(motors)
['Yamaha', 'Aprilia', 'KTM', 'Honda']
Aprilia
['Yamaha', 'KTM', 'Honda']
| instructie | Eigenschap | Gebruikt index |
|---|---|---|
| del | Verwijdert item uit lijst dat je niet meer nodig hebt | Ja |
| .pop( ) | Verwijdert item uit lijst dat je nog wilt gebruiken | Ja (hoeft niet) |
| .remove( ) | Verwijdert item uit lijst op basis van de letterlijke waarde | Nee |
- del gebruik je om iets te verwijderen uit een lijst - wat je niet meer nodig hebt
- .pop( ) gebruik je om iets te verwijderen uit een lijst - en om de waarde verder nog wel te gebruiken
- .pop( ) maakt gebruik van een indexnummer
- Als je geen index opgeeft bij .pop( ), wordt het laatste item verwijderd
- .remove( ) gebruik je om een item te verwijderen uit een lijst waarvan je de waarde weet
- .remove( ) verwijdert het eerste gevonden item, zijn er meer met dezelfde waarde, gebruik dan een loop (hoofdstuk 7)
06 - Items Sorteren
- Lijsten kunnen op verschillende manieren gesorteerd worden
- Met de .sort( )-methode kun je een lijst alfabetisch sorteren
- Bij het alfabetisch sorteren is er een onderscheid tussen kleine- en hoofd-letters
- De .sort( )-methode verandert de lijst permanent, de oorspronkelijke situatie is niet meer beschikbaar
motors = ['Yamaha','Aprilia','KTM','Honda','buell','harley','kawasaki','234']
motors.sort()
print(motors)
['234', 'Aprilia', 'Honda', 'KTM', 'Yamaha', 'buell', 'harley', 'kawasaki']
- Door een argument reverse=True aan de .sort( )-methode toe te voegen ontstaat de omgekeerde volgorde
- De .sort( )-methode kan ook integers sorteren
- Wanneer je strings en integers combineert in een lijst geeft de .sort( )-methode een foutmelding
numbers = [1,3,5,7,2]
numbers.sort(reverse=True)
print(numbers)
[7, 5, 3, 2, 1]
- Om de oorspronkelijke sortering van de lijst te behouden kun je de .sorted( )-functie gebruiken
- De .sorted( )-functie sorteert naar een nieuw resultaat en laat de originele lijst zoals hij is
numbers = [1,3,9,1,5,7,2]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
[1, 1, 2, 3, 5, 7, 9]
Kleine- & hoofd-letters gemixed sorteren
- Python prioriteert hoofdletters bij de sort( )-methode
- Om dit te voorkomen kun je het volgende argument gebruiken: key=str.lower
motors = ['Yamaha','Aprilia','KTM','Honda','buell','harley','kawasaki','234']
motors.sort(key=str.lower)
print(motors)
['234', 'Aprilia', 'buell', 'harley', 'Honda', 'kawasaki', 'KTM', 'Yamaha']
Een lijst in omgekeerde volgorde
- De oorspronkelijke volgorde van een lijst omkeren kan met de .reverse( )-methode
- Let op dat de .reverse( )-methode niet alfabetisch sorteert. Hij draait alleen de lijst om
- De omkering is permanent. Wil je dat niet? Voer hem dan nog eens uit
motors = ['Yamaha','Aprilia','KTM','Honda','buell','harley','kawasaki','234']
motors.reverse()
print(motors)
['234', 'kawasaki', 'harley', 'buell', 'Honda', 'KTM', 'Aprilia', 'Yamaha']
07 - De items in een lijst tellen
- De functie len( ) kan het aantal items in een lijst tellen
- Python begint bij index 0 voor het eerste item, maar
len(motors)geeft het aantal items (hier 8)
motors = ['Yamaha','Aprilia','KTM','Honda','buell','harley','kawasaki','234']
print(len(motors))
8