3.3. Presentación de las tuplas
Una tupla es una lista inmutable. Una tupla no puede cambiar de
ninguna manera una vez creada.
Ejemplo 3.15. Definir una tupla
>>> t = ("a", "b", "mpilgrim", "z", "ejemplo")
>>> t
('a', 'b', 'mpilgrim', 'z', 'ejemplo')
>>> t[0]
'a'
>>> t[-1]
'ejemplo'
>>> t[1:3]
('b', 'mpilgrim')
|
Una tupla se define de la misma manera que una lista, excepto que el
conjunto de elementos se encierra entre paréntesis en lugar de
corchetes.
|
|
Los elementos de una tupla tienen un orden definido, como una lista.
Los índices de las tuplas comienzan en cero, igual que una lista, de
manera que el primer elemento de una tupla que no esté vacía siempre es
t[0].
|
|
Los índices negativos cuentan desde el final de la tupla, justo como
en una lista.
|
|
También funciona el slicing.
Observe que cuando trocea una lista, obtiene una nueva lista; cuando
trocea una tupla, obtiene una nueva tupla.
|
Ejemplo 3.16. La tuplas no tienen métodos
>>> t
('a', 'b', 'mpilgrim', 'z', 'ejemplo')
>>> t.append("nuevo")
Traceback (innermost last):
File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'append'
>>> t.remove("z")
Traceback (innermost last):
File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'remove'
>>> t.index("ejemplo")
Traceback (innermost last):
File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'index'
>>> "z" in t
True
|
No puede añadir métodos a una tupla. Las tuplas no tienen métodos
append o extend.
|
|
No puede eliminar elementos de una tupla. Las tuplas no tienen
métodos remove o pop.
|
|
No puede buscar elementos en una tupla. Las tuplas no tienen método
index.
|
|
Sin embargo, puede usar in para comprobar
si existe un elemento en la tupla.
|
¿Para qué sirven entonces las tuplas?
- Las tuplas son más rápidas que las listas. Si define un
conjunto constante de valores y todo lo que va a hacer es iterar sobre
ellos, use una tupla en lugar de una lista.
- “Proteger contra escritura” los datos que no
necesita cambiar hace el código más seguro. Usar una tupla
en lugar de una lista es como tener una sentencia
assert implícita mostrando que estos datos son
constantes, y que se necesita una acción consciente (y una función
específica) para cambiar eso.
- ¿Recuerda que dije que las claves de diccionario pueden
ser enteros, cadenas y “unos pocos otros tipos”? Las tuplas
son uno de estos tipos. Se pueden usar como claves en un diccionario, pero
las listas no.En realidad, es más complicado que esto. Las claves de diccionario
deben ser inmutables. Las tuplas son inmutables, pero si tiene una tupla
de listas, eso cuenta como mutable, y no es seguro usarla como clave de un
diccionario. Sólo las tuplas de cadenas, números y otras tuplas seguras
para los diccionarios pueden usarse como claves.
- Se pueden usar tuplas para dar formato a cadenas, como
veremos en breve.
 |
| Las tuplas se pueden convertir en listas, y viceversa. La función
incorporada tuple toma una lista y devuelve una tupla con los mismos
elementos, y la función list toma una tupla y devuelve una lista. En
efecto, tuple "congela" una lista, y list "descongela" una
tupla.
|