Python Tuples Beheersen: Definitie, Gebruik en Verschillen met Lists
Wat is een Tuple?
Een tuple is een verzameling objecten die geordend en immutable is. Tuples zijn sequences, net zoals lists. De verschillen tussen tuples en lists zijn: tuples kunnen niet gewijzigd worden in tegenstelling tot lists, en tuples gebruiken haakjes, terwijl lists vierkante haken gebruiken.
Een tuple aanmaken is zo simpel als verschillende komma-gescheiden waarden plaatsen. Optioneel kun je deze komma-gescheiden waarden tussen haakjes zetten. Bijvoorbeeld:
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5)
tup3 = "a", "b", "c", "d"
De lege tuple wordt geschreven als twee haakjes met niets ertussen:
tup1 = ()
Om een tuple met één enkele waarde te schrijven, moet je een komma toevoegen, ook al is er maar één waarde:
tup1 = (50,)
Net als string-indices, beginnen tuple-indices bij 0, en kunnen ze gesliced, geconcateneerd, etc. worden.
Waarden in Tuples Benaderen
Om waarden in een tuple te benaderen, gebruik je de vierkante haken voor slicing samen met de index of indices om de waarde op te halen die op die index beschikbaar is. Bijvoorbeeld:
#!/usr/bin/python
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
tup1[0]: physics tup2[1:5]: [2, 3, 4, 5]
Tuples Updaten
Tuples zijn immutable, wat betekent dat je de waarden van tuple-elementen niet kunt updaten of wijzigen. Je kunt wel delen van bestaande tuples nemen om nieuwe tuples te maken, zoals het volgende voorbeeld demonstreert:
#!/usr/bin/python
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# De volgende actie is niet geldig voor tuples
# tup1[0] = 100
# Laten we een nieuwe tuple maken als volgt
tup3 = tup1 + tup2
print tup3
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
(12, 34.56, 'abc', 'xyz')
Tuple Elementen Verwijderen
Het verwijderen van individuele tuple-elementen is niet mogelijk. Je kunt natuurlijk wel een nieuwe tuple samenstellen met de ongewenste elementen weggelaten.
Om expliciet een volledige tuple te verwijderen, gebruik je de del statement. Bijvoorbeeld:
#!/usr/bin/python
tup = ('physics', 'chemistry', 1997, 2000)
print tup
del tup
print "Na verwijderen tup: "
print tup
Dit produceert het volgende resultaat. Let op de exception, dit is omdat na del tup de tuple niet meer bestaat:
('physics', 'chemistry', 1997, 2000)
Na verwijderen tup:
Traceback (most recent call last):
File "test.py", line 9, in
print tup
NameError: name 'tup' is not defined
Basale Tuple Operaties
Tuples reageren op de + en * operatoren net zoals strings; ze betekenen concatenatie en herhaling hier ook, behalve dat het resultaat een nieuwe tuple is, geen string.
Feitelijk reageren tuples op alle algemene sequence-operaties die we op strings gebruikten in het vorige hoofdstuk:
| Python Expressie | Resultaat | Beschrijving |
|---|---|---|
| len((1, 2, 3)) | 3 | Lengte |
| (1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | Concatenatie |
| ('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | Herhaling |
| 3 in (1, 2, 3) | True | Lidmaatschap |
| for x in (1, 2, 3): print x, | 1 2 3 | Iteratie |
Indexing, Slicing en Matrices
Omdat tuples sequences zijn, werken indexing en slicing hetzelfde voor tuples als voor strings. Neem aan dat de volgende input gegeven is:
L = ('spam', 'Spam', 'SPAM!')
| Python Expressie | Resultaat | Beschrijving |
|---|---|---|
| L[2] | 'SPAM!' | Offsets beginnen bij nul |
| L[-2] | 'Spam' | Negatief: tellen vanaf rechts |
| L[1:] | ['Spam', 'SPAM!'] | Slicing haalt secties op |
Geen Omsluitende Delimiters
Elke set van meerdere objecten, komma-gescheiden, geschreven zonder identificerende symbolen (dus haakjes voor lists, haakjes voor tuples, etc.), defaults naar tuples, zoals aangegeven in deze korte voorbeelden:
#!/usr/bin/python print 'abc', -4.24e93, 18+6.6j, 'xyz' x, y = 1, 2 print "Waarde van x, y: ", x, y
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
abc -4.24e+93 (18+6.6j) xyz Waarde van x, y: 1 2
Ingebouwde Tuple Functies
Python bevat de volgende tuple-functies:
| Nr. | Functie met Beschrijving |
|---|---|
| 1 | cmp(tuple1, tuple2) Vergelijkt elementen van beide tuples. |
| 2 | len(tuple) Geeft de totale lengte van de tuple. |
| 3 | max(tuple) Retourneert item uit de tuple met max waarde. |
| 4 | min(tuple) Retourneert item uit de tuple met min waarde. |
| 5 | tuple(seq) Converteert een lijst naar tuple. |
Python
- Python Datatypes onder de knie krijgen: Een praktische gids
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python Pass Statement onder de knie krijgen: Een praktische gids
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-iterators: hoe ze werken en hoe je je eigen maakt
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
- Python's time.sleep() onder de knie krijgen: best practices, multithreading en real-world voorbeelden
- Python-tuples beheersen: Packen, uitpakken, vergelijken, slicen en dictionary-sleutels
- Python's enumerate() meesteren: lussen met indices voor lijsten, tuples, strings en dictionaries