7.1 Tuples
Seqüències Immutables
Les tuples són seqüències immutables: no es poden modificar. Les tuples i les llistes tenen molt en comú, però les llistes són seqüències mutables: es poden modificar.
Les tuples utilitzen parèntesis en lloc de claudàtors:
lst = ['a', 3, -0.2]
tup = ('a', 3, -0.2)
Un cop creats, els elements de les llistes i tuples s’accedeixen usant la mateixa notació:
>>> lst[0]
'a'
>>> tup[0]
'a'
Slicing es pot utilitzar en ambdues:
>>> lst[:2]
['a', 3]
>>> tup[:2]
('a', 3)
Les tuples no es poden modificar:
>>> tup[0] = 'b'
TypeError: 'tuple' object does not support item assignment
Les tuples tenen menys mètodes que les llistes. De fet, els únics mètodes regulars són count i index:
>>> dir(list)
['add', 'class', 'contains', 'delattr', 'delitem', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'gt', 'hash', 'iadd', 'imul', 'init', 'iter', 'le', 'len', 'lt', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'reversed', 'rmul', 'setattr', 'setitem', 'sizeof', 'str', 'subclasshook', 'append', 'count', extend', 'index', 'insert', 'pop', 'remove', 'reverse', sort'] >>> dir(tuple) ['add', 'class', 'contains', 'delattr', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'getnewargs', 'gt', 'hash', 'init', 'iter', 'le', 'len', 'lt', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'rmul', 'setattr', 'sizeof', 'str', 'subclasshook', 'count', 'index']
La resta de mètodes de les llistes no estan disponibles per a les tuples, perquè modifiquen l’objecte, i les tuples, són immutables, no es poden modificar.
Es pot utilitzar un for per iterar sobre els valors d’una tupla:
>>> tup = ('a', 3, -0.2)
>>> for item in tup:
print(item)
a
3
-0.2
Una tupla es pot passar com argument a la built-in function len:
>>> len(tup)
3
També és possible iterar sobre els índexs d’una tupla:
>>> for i in range(len(tup)):
print(tup[i])
a
3
-0.2