Python/Tipos de datos nativos/Presentación de las tuplas

De Wikilibros, la colección de libros de texto de contenido libre.

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")                                 [1]
>>> t
('a', 'b', 'mpilgrim', 'z', 'ejemplo')
>>> t[0]                                                                       [2]
'a'
>>> t[-1]                                                                      [3]
'ejemplo'
>>> t[1:3]                                                                     [4]
('b', 'mpilgrim')
[1] 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.
[2] 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].
[3] Los índices negativos cuentan desde el final de la tupla, justo como en una lista.
[4] 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")                                                            [1]
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'append'
>>> t.remove("z")                                                                [2]
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'remove'
>>> t.index("ejemplo")                                                           [3]
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'index'
>>> "z" in t                                                                     [4]
True
[1] No puede añadir elementos a una tupla. Las tuplas no tienen métodos append o extend.
[2] No puede eliminar elementos de una tupla. Las tuplas no tienen métodos remove o pop.
[3] No puede buscar elementos en una tupla. Las tuplas no tienen método index.
[4] 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.
Nota: 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.

Más sobre tuplas