Direct naar de hoofdinhoud
Module 3 · Les 2 van 410/36 in de cursus~10 min
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

Python
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

Python
nome, anni = ("Ada", 36)
nome   # 'Ada'
anni   # 36

Het werkt ook zonder haakjes (het is de komma die het tupel):

Python
x, y = 10, 20

En het maakt ruilen mogelijk zonder een tijdelijke variabele, een pure Python idioom:

Python
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":

Python
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.

Python
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

Oefening#python.m3.l2.e1
Pogingen: 0Laden…

Gegeven `a = 1` en `b = 2`, verwissel hun waarden op een enkele regel (uitpakken van tupels) en evalueer de tupel (a, b).

Editor laden…
Toon hint

een, b = b, een

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#python.m3.l2.e2
Pogingen: 0Laden…

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)`.

Editor laden…
Toon hint

primo, *centro, ultimo = voti → primo=7, centro=[5,8,6], ultimo=9.

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#python.m3.l2.e3
Pogingen: 0Laden…

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`.

Editor laden…
Toon hint

Gebruik x, y, z = punt om de drie coördinaten in één enkele verklaring te extraheren.

Oplossing beschikbaar na 3 pogingen