Modulelessen (2/4)
Tupels en uitpakken
Een tuple is een geordende en onveranderlijke reeks: zodra deze is gemaakt, kan dat zijn elementen niet langer veranderen. Het staat tussen haakjes (hoewel wat het feitelijk definieert is de komma).
Een tupel maken
vuota = ()
una = (42,) # ATTENZIONE: senza virgola, (42) è solo 42 fra parentesi
coords = (10, 20)
mista = ("Ada", 36, True)Toegang via index en segmentatie werkt precies hetzelfde als voor lijsten: coords[0],
coords[-1], mista[:2].
Wanneer moet u een tupel gebruiken in plaats van een lijst?
- Wanneer de waarde een vaste verzameling vertegenwoordigt die niet mag veranderen
(coördinaten, een datum als
(year, month, day), een versie(1, 2, 3)). - Wanneer u de waarde moet gebruiken als woordenboeksleutel of als onderdeel van
a
set: alleen onveranderlijke (hashbare) objecten kunnen worden gebruikt. - Wanneer u de lezer van de code wilt laten weten dat die waarde is "bevroren".
Uitpakken: de functie die de manier verandert waarop je Python schrijft
nome, anni = ("Ada", 36)
nome # 'Ada'
anni # 36Het werkt ook zonder haakjes (het is de komma die het tupel):
x, y = 10, 20En het maakt ruilen mogelijk zonder een tijdelijke variabele, een pure Python idioom:
a, b = 1, 2
a, b = b, a
a, b # (2, 1)Uitpakken met * (rust)
Wanneer u "de eerste en de rest" of "de eerste, de laatste, het midden":
primo, *resto = [1, 2, 3, 4, 5]
primo # 1
resto # [2, 3, 4, 5]
primo, *centro, ultimo = [1, 2, 3, 4, 5]
centro # [2, 3, 4]Dit heet steropdracht: de ster verzamelt alles wat dat oplevert blijft in een lijst staan.
De tupelval met één element
(42) is geen tupel, het is het getal 42 tussen haakjes. Om een
tuple met één element, je hebt de komma nodig: (42,). Zonder dit, elke operatie
mislukt op een verwarrende manier.
x = (42)
type(x) # <class 'int'>
x = (42,)
type(x) # <class 'tuple'>Tupels met één element
Om een tupel te maken die slechts één element bevat, zijn alleen haakjes niet voldoende: u moet een afsluitende komma invoegen, bijvoorbeeld t = (42,). Zonder de komma behandelt Python de haakjes als een eenvoudige wiskundige groepering, waardoor een gewoon geheel getal 42 ontstaat.
Probeer het
Gegeven `a = 1` en `b = 2`, verwissel hun waarden op een enkele regel (uitpakken van tupels) en evalueer de tupel (a, b).
Toon hint
een, b = b, een
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Gebruik uit de lijst `voti = [7, 5, 8, 6, 9]` uitpakken om het eerste cijfer in `primo` te extraheren, het laatste in `ultimo` en de overige in `centro`. Evalueer `(primo, centro, ultimo)`.
Toon hint
primo, *centro, ultimo = voti → primo=7, centro=[5,8,6], ultimo=9.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Given the tuple `point = (4, 5, 6)`, use unpacking to assign the three values to the variables `x`, `y`, `z` respectively. Then, calculate the sum of `x`, `y`, and `z` and store it in `coord_sum`. Finally, evaluate `coord_sum`.
Toon hint
Gebruik x, y, z = punt om de drie coördinaten in één enkele verklaring te extraheren.
Oplossing beschikbaar na 3 pogingen