tuple python – Tuplas en Python: El tipo tuple y operaciones más comunes

tuple python - tuplas en python

La clase tuple en Python es uno de los tipos de datos más singulares del lenguaje. Pertenece a la categoría de tipos secuenciales y, a diferencia del tipo list, las tuplas son un tipo de secuencia inmutable. Esto quiere decir que una tupla no puede ser modificada (no se pueden añadir ni eliminar elementos a una tupla).

Este tutorial describe al detalle qué es el tipo tuple y cuáles son sus operaciones más comunes. ¿Quieres conocerlas?

Índice

Qué es una tupla

La clase tuple en Python es un tipo contenedor, compuesto, que en un principio se pensó para almacenar grupos de elementos heterogéneos, aunque también puede contener elementos homogéneos.

Junto a las clases list y range, es uno de los tipos de secuencia en Python, con la particularidad de que son inmutables. Esto último quiere decir que su contenido NO se puede modificar después de haber sido creada.

En general, para crear una tupla en Python simplemente hay que definir una secuencia de elementos separados por comas.

Por ejemplo, para crear una tupla con los números del 1 al 5 se haría del siguiente modo:

>>> numeros = 1, 2, 3, 4, 5

Como te indicaba, la clase tuple también puede almacenar elementos de distinto tipo:

>>> elementos = 3, 'a', 8, 7.2, 'hola'

Incluso pueden contener otros elementos compuestos y objetos, como listas, otras tuplas, etc.:

>>> tup = 1, ['a', 'e', 'i', 'o', 'u'], 8.9, 'hola'

A continuación te indico las diferentes formas que existen de crear una tupla en Python:

  • Para crear una tupla vacía, usa paréntesis () o el constructor de la clase tuple() sin parámetros.
  • Para crear una tupla con un único elemento: elem, o (elem, ). Observa que siempre se añade una coma.
  • Para crear una tupla de varios elementos, sepáralos con comas: a, b, c o (a, b, c).
  • Las tuplas también se pueden crear usando el constructor de la clase, tuple(iterable). En este caso, el constructor crea una tupla cuyos elementos son los mismos y están en el mismo orden que los ítems del iterable. El objeto iterable puede ser una secuencia, un contenedor que soporte la iteración o un objeto iterador.

❗️IMPORTANTE: El hecho que determina que una secuencia de elementos sea una tupla es la coma , no los paréntesis. Los paréntesis son opcionales y solo se necesitan para crear una tupla vacía o para evitar ambigüedades.

# Aquí, a, b y c no son una tupla, sino tres argumentos con
# los que se llama a la función "una_funcion"
>>> una_funcion(a, b, c)

# Aquí, a, b y c son tres elementos de una tupla. Esta tupla,
# es el único argumento con el que se invoca a la 
# función "una_funcion"
>>> una_funcion((a, b, c))

La forma de crear una tupla sin paréntesis es conocida como tuple packing (algo así como empaquetado de tuplas).

Cómo acceder a los elementos de una tupla en Python

Para acceder a un elemento de una tupla se utilizan los índices. Un índice es un número entero que indica la posición de un elemento en una tupla. El primer elemento de una tupla siempre comienza en el índice 0.

Por ejemplo, en una tupla con 3 elementos, los índices de cada uno de los ítems serían 0, 1 y 2.

>>> tupla = ('a', 'b', 'd')
>>> tupla[0]  # Primer elemento de la tupla. Índice 0
'a'
>>> tupla[1]  # Segundo elemento de la tupla. Índice 1
'b'

Si se intenta acceder a un índice que está fuera del rango de la tupla, el intérprete lanzará la excepción IndexError. De igual modo, si se utiliza un índice que no es un número entero, se lanzará la excepción TypeError:

>>> tupla = 1, 2, 3  # Los índices válidos son 0, 1 y 2
>>> tupla[8]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: tuple index out of range

>>> tupla[1.0]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: tuple indices must be integers or slices, not float

Acceso a los elementos usando un índice negativo

Al igual que ocurre con las listas (y todos los tipos secuenciales), está permitido usar índices negativos para acceder a los elementos de una tupla. En este caso, el índice -1 hace referencia al último elemento de la secuencia, el -2 al penúltimo y así, sucesivamente:

>>> bebidas = ('agua', 'café', 'batido', 'sorbete')
>>> bebidas[-1]
'sorbete'
>>> bebidas[-3]
'café'

Acceso a un subconjunto de elementos

También es posible acceder a un subconjunto de elementos de una tupla utilizando el operador [:]:

>>> vocales = 'a', 'e', 'i', 'o', 'u'
>>> vocales[2:3]  # Elementos desde el índice 2 hasta el índice 3-1
('i',)
>>> vocales[2:4]  # Elementos desde el 2 hasta el índice 4-1
('i', 'o')
>>> vocales[:]  # Todos los elementos
('a', 'e', 'i', 'o', 'u')
>>> vocales[1:]  # Elementos desde el índice 1
('e', 'i', 'o', 'u')
>>> vocales[:3]  # Elementos hasta el índice 3-1
('a', 'e', 'i')

O indicando un salto entre los elementos con el operador [::]:

>>> pares = 2, 4, 6, 8, 10, 12, 14
>>> pares[::2]  # Acceso a los elementos de 2 en 2
(2, 6, 10, 14)
>>> pares[1:5:2]  # Elementos del índice 1 al 4 de 2 en 2
(4, 8)
>>> pares[1:6:3]  # Elementos del índice 1 al 5 de 3 en 3
(4, 10)

tuple unpacking

En este último apartado de esta sección vamos a ver el concepto conocido como tuple unpacking (desempaquetado de una tupla). Realmente el unpacking se puede aplicar sobre cualquier objeto de tipo secuencia, aunque se usa mayoritariamente con las tuplas, y consiste en lo siguiente:

>>> bebidas = 'agua', 'café', 'batido'
>>> a, b, c = bebidas
>>> a
'agua'
>>> b
'café'
>>> c
'batido'

Como puedes apreciar, es un tipo de asignación múltiple. Requiere que haya tantas variables a la izquierda del operador de asignación = como elementos haya en la secuencia.

for tuple Python – Recorrer una tupla

El bucle for en Python es una de las estructuras ideales para iterar sobre los elementos de una secuencia. Para recorrer una tupla en Python utiliza la siguiente estructura:

>>> colores = 'azul', 'blanco', 'negro'
>>> for color in colores:
        print(color)

azul
blanco
negro

Modificar una tupla en Python

Como te he indicado, las tuplas son objetos inmutables. No obstante, las tuplas pueden contener objetos u otros elementos de tipo secuencia, por ejemplo, una lista. Estos objetos, si son mutables, sí se pueden modificar:

>>> tupla = (1, ['a', 'b'], 'hola', 8.2)
>>> tupla[1].append('c')  # tupla[1] hace referencia a la lista
>>> tupla
(1, ['a', 'b', 'c'], 'hola', 8.2)

Longitud (len) de una tupla en Python

Como cualquier tipo secuencia, para conocer la longitud de una tupla en Python se hace uso de la función len(). Esta función devuelve el número de elementos de una tupla:

>>> vocales = ('a', 'e', 'i', 'o', 'u')
>>> len(vocales)
5

Cómo saber si un elemento está en una tupla en Python

Ya adelanté en el tutorial sobre operadores en Python, que para saber si un elemento está contenido en una tupla, se utiliza el operador de pertenencia in:

>>> colores = 'azul', 'blanco', 'negro'
>>> if 'azul' in colores:
...     print('Sí')
...     
Sí
>>> if 'verde' not in colores:
...     print('No')
...     
No

Listado de métodos de la clase tuple en Python

Para terminar, se muestran los métodos de la clase tuple en Python, que son los métodos definidos para cualquier tipo secuencial:

MétodoDescripción
index(elemento)Obtiene el índice de la primera ocurrencia del elemento en la tupla. Si el elemento no se encuentra, se lanza la excepción ValueError.
count(elemento)Devuelve el número de ocurrencias del elemento en la tupla.

Con esto damos por finalizado el tutorial sobre la clase tuple en Python. Recuerda que son un tipo secuencial que no se puede modificar. Úsalas cuando no quieras que los elementos de una lista se deban modificar o para almacenar las claves de un diccionario.

¡Te espero en el siguiente tutorial!

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento