Por regla general siempre utilizo listas en Python. Y digo, por regla general, por no decirte siempre. Pero las listas, no es la única opción que tienes para almacenar datos en Python. Existe otra tipo de dato muy similar a las listas pero con una diferencia fundamental, me estoy refiriendo a las tuplas. Esa diferencia fundamental es la inmutabilidad de las tuplas. Y es que así como en una lista en Python puedes cambiar sus elementos, las tuplas son inmutables.
Así en esta Pyldora Pythonica te quiero mostrar como puedes trabajar con tuplas y que posibilidades te ofrecen.
Tuplas en Python
Como te decía en la introducción, las tuplas son listas de elementos, pero listas inmutables. Es decir, que una vez definida la tupla ya no puedes modificarla. La única opción que tienes para cambiar una tupla es volviendo a definirla. Al igual que sucede con las listas, las tuplas son conjuntos de elementos. Estos conjuntos de elementos puede contener todo tipo de datos, incluso, puedes tener en una misma tupla distintos tipos de datos.
Para saber si un objeto es una tupla puedes utilizar la función type, que te debe devolver lo siguiente,
<class 'tuple'>
Crear tu primera tupla
¿Como puedes definir una tupla?. Definir una tupla es tan sumamente sencillo como escribir lo siguiente,
ejemplo = (1, 2, 3)
Si te fijas, en el caso de las listas utilizabas los corchetes para definir tus listas, en el caso de las tuplas utilizas los paréntesis. Es muy probable, que al ejecutar alguna función o método, te haya devuelto una tupla, en lugar de una lista.
También es posible crear una tupla sin la necesidad de utilizar paréntesis. Esto es lo que se concoce como empaquetado de tupla. Por ejemplo,
>>> ejemplo = 1, 2, 3
Y de la misma forma que viste con las listas, las tuplas, también permiten el desempetado. Esto lo puedes ver con mas detalle en el siguiente ejemplo,
>>> ejemplo = (1, 2)
>>> uno, dos = ejemplo
>>> print(uno, dos)
( 1, 2)
`
Acceder a los elemenos de la tupla
Sin embargo, de la misma forma, que hacías en el caso de las listas, en el caso de las tuplas, para acceder a cada uno de los elementos tienes que utilizar corchetes. Así por ejemplo,
>>> ejemplo = (1, 2, 3)
>>> print(ejemplo[0])
1
Por supuesto en el caso de las tuplas, el índice del primer elemento de la tupla, al igual que sucedía con las listas, es el 0
. Pero, si se ocurre intentar modificar algún elemento de la tupla, te llevarás la sorpresa de que te arroja un error. La única opción que tienes para modificar una tupla es volverla a definir.
También puedes acceder al último de la tupla utilizando los índices negativos. Es decir, que el último elemento de la tupla es el -1
. Así, en el ejemplo, que nos viene acompañando en esta Pyldora Pythonica, lo verías de la siguiente forma,
>>> ejemplo = (1, 2, 3)
>>> print(ejemplo[-1])
3
Puedes extera perte de una tupla utilizando los dos puntos, :
, con la siguiente notación tuple[inicio:fin]
, teniendo en cuenta que el fin no está incluido. Así, por ejemplo,
>>> ejemplo = (1, 2, 3, 4)
>>> print(ejemplo[1:3])
2, 3
Recuerda que en las tuplas al igual que en las listas, el índice empieza en 0
. Así, para el ejemplo anterior, el primero elemento, el que tiene el índice 0
es el elemento con el valor 1
y el último elemento de la tupla, es el que tiene el índice 3
y el valor 4
. Menudo lío de números. Podía haber utilizado letras, pero creo que así queda mucho mas evidente.
Por supuesto que puedes extraer datos al igual que lo hacías con las listas. Es decir,
ejemplo[1:]
va desde el segundo elemento al finalejemplo[:3]
va desde el primer elemento hasta el tercer elemento. Recuerda que el elemento con índicefin
no se contempla.ejemplo[:]
desde el principio hasta el fin
Operaciones con tuplas
Las tuplas al igual que las listas soportan diferentes operaciones como por ejemplo, la suma y la multiplicación. Un ejemplo, para que veas lo sencillo que resulta operar con tuplas,
>>> print((1, 2, 3) + (4, 5, 6))
(1, 2, 3, 4, 5, 6)
>>> print(("Hola",) * 2)
("Hola", "Hola")
Borrar una tupla
Como he indicado anteriormente, las tuplas no se pueden modificar, de esta forma, si intentas borrar un elemento de una tupla, se generará un error. Lo que si puedes hacer es borrar una tupla completa. Por ejemplo,
>>> ejemplo = (1, 2, 3)
>>> del ejemplo
>>> print(ejemplo)
NameError: name 'ejemplo' is not defined
Métodos de tuplas
Las tuplas tienen un par de métodos interesantes que nos permiten tener información sobre los elementos de la tupla. Por ejemplo,
count
este método nos permite conocer el número de elementos.index
por otro lado, este método nos permite conocer el índice de un elemento.
Por ejemplo,
>>> ejemplo = ( "a", "b", "c")
>>> print(ejemplo.count("a"))
1
>>> print(ejemplo.index("c"))
2
Por otro lado también tienes in
que te permite saber si un elemento está en una tupla. Por ejemplo,
>>> ejemplo = ("a", "b", "c")
>>> print("a" in ejemplo)
True
¿Que ventajas tiene las tuplas?
Ya has visto que las tuplas y las listas son muy similares. ¿Cuando utilizar listas y tuplas?. Sin enbargo, hay determinadas ventajas de utilizar tuplas frente a listas.
- En general se utilizan tuplas para tipos de datos distintos, mientras que las listas se utilizan para el mismo tipo de datos.
- Recorrer todos los elementos de una tupla es más rápido que hacerlo sobre una lista.
- Una tupla, al ser inmutable se puede utilizar como clave en un diccionario. Sin embargo, una lista no se puede utilizar.
- Si tienes datos que no deben modificarse deberías de utilizar tuplas para evitar posibles errores.
El vídeo
A continuación puedes encontrar un vídeo con todo lo que te he contado anteriormente, pero con ejemplos prácticos y puesto en funcionamiento.