Python logo - Curso de Python desde cero

Curso de Python: Las Tuplas

Vemos las características de esta estructura que es la tupla

Hola, qué tal, bienvenidos a otra entrega de este curso de programación en python, en el que nos encontramos abordando la sintaxis básica del lenguaje.

Los comienzos en cualquier lenguaje de programación son duros porque antes de poder hacer cosas interesantes, estamos obligados a conocer la sintaxis y eso casi siempre es un poco aburrido. Pero bueno, no os preocupéis porque espero que pronto nos podamos poner a realizar cosas interesantes con este lenguaje de programación.

De momento, en este post vamos a abordar otra estructura fundamental más que son las Tuplas. Si entendimos en el post anterior el concepto de las listas en Python y el funcionamiento de estas, no vamos a tener ningún problema con las tuplas porque son unas estructuras muy parecidas a las listas pero con algunas restricciones.

Qué son las tuplas en Python

Las tuplas son listas inmutables, y algo inmutable es algo que no cambia a lo largo del tiempo. En definitiva, una tupla es exactamente igual que una lista en la que no podemos añadir elementos ni eliminar elementos, ni mover elementos, por eso es inmutable porque no la podemos modificar.

Hay que tener en cuenta que los métodos vistos en el post anterior con las listas, no tienen cabida con las tuplas. No podemos utilizar append, ni extend, ni remove, etcétera.

A pesar de estas restricciones las tuplas sí que permiten realizar ciertas acciones, como por ejemplo extraer porciones de la tupla. Esto es algo que vimos en el post anterior con las listas y con las tuplas también lo podemos hacer. Hay que tener en cuenta que el resultado de extraer una porción no es que modifiquemos la tupla en la que estamos extrayendo la porción, sino que estamos obteniendo una nueva tupla después de extraer esa porción.

Las tuplas no permiten realizar búsquedas, entonces no podremos utilizar el método index visto también en el post anterior pero sí que permiten comprobar si un elemento se encuentra dentro de una tupla. ACTUALIZACIÓN: Las tuplas sí que permiten realizar búsqueda utilizando el método index, como veremos más adelante.

Ventajas de las Tuplas respecto a las listas

Las tuplas tienen ciertas restricciones respecto a las listas y esas restricciones sí que pueden ser interesantes en algunos escenarios. Me refiero a que puede ser interesante agregar, eliminar, añadir elementos a una lista, pero bajo determinadas circunstancias y escenarios una tupla puede ser muy interesante.

De momento, la primera ventaja que tiene una tupla respecto a una lista, es que la tupla es más rápida. Cuando hablamos de rapidez no nos referimos a la hora de programar, eso depende en gran medida del programador. Nos referimos a la hora de ejecutarlas cuando ejecutamos un programa.

Una tupla siempre va a ejecutarse más rápido que una lista, y se va a ejecutar más rápido por una serie de optimizaciones que tienen respecto a la lista. Por ejemplo, una tupla siempre va a ocupar menos espacio en memoria que una lista, o lo que es lo mismo, una tupla va a dar un mayor rendimiento en cuanto a ejecución respecto a una lista.

En definitiva, si tú vas a necesitar almacenar una serie de elementos pero lo único que vas a hacer con ellos en el futuro es recorrerlos, es mucho mejor que utilices una tupla en lugar de una lista. Si esos elementos que necesitas almacenar sabes que en un futuro los vas a tener que modificarl, eliminar, mover, agregar… entonces tendrás que hacer una lista.

Unas de las particularidades que tienen las tuplas es que nos van a permitir formatear cadenas, lo veremos en un futuro, y también que se pueden utilizar como claves en un diccionario. Esto de momento no os va a sonar porque aún no sabemos lo que es un diccionario lo veremos en el próximo capitulo. Pero para cuando lo veamos, es bueno saber que una tupla se puede utilizar como clave en su diccionario mientras que las listas no permiten hacer eso.

Sintaxis de las Tuplas

¿Cuál es la sintaxis de una tupla? pues es exactamente igual que la sintaxis de una lista con una pequeña salvedad, y es que si recordáis las listas iban siempre entre corchetes mientras que las tuplas van entre paréntesis y además estos paréntesis pueden ser opcionales.

>>> nombre_tupla = [elemento1, elemento2, elemento3, etc]

Declarar una tupla en Python

Vamos a ver cuál sería la sintaxis a la hora de crear una tupla. Lo primero que tenemos que hacer es escoger un nombre para la tupla que puede ser el que queráis respetando las convenciones mencionadas en posts anteriores. El nombre seguido del símbolo igual, abriríamos paréntesis y dentro de estos paréntesis los elementos que van a formar parte de la tupla separados por comas.

>>> mi_primera_tupla = ("Lucio", "BocaNegra", "MariMisi", "Ramón")

Recomiendo ponerlos para no confundirlos en determinadas circunstancias como los parámetros que puede recibir una función, pero bueno si se quieren omitir se puede hacer sin problema.

El índice de las tuplas

A la hora de acceder a los elementos de una tupla lo haremos exactamente igual a lo que explicamos en el post anterior con las listas, es decir, declarar una lista en Python.

>>> nombre_tupla = [elemento1, elemento2, elemento3, etc] 
Posición 0 -> elemento1 
Posición 1 -> elemento2  
Posición 2 -> elemento3  
...

Si queremos acceder a un elemento en concreto de una tupla es exactamente igual a como lo hacíamos en las listas. Hay que saber cuál es el índice y el índice se representa entre corchetes.

>>> print(mi_primera_tupla[2]) 
'MariMisi'

Conseguir el índice de un elemento .index()

Como vimos en el artículo de las listas, a partir de Python 2.6 el programa nos devuelva el índice de un elemento dentro de la tupla con la función index().

>>> print(mi_primera_tupla.index("Ramón"))
3

En las tuplas se puede repetir en diferentes posiciones el mismo elemento. Pero siempre nos va a devolver el índice del primer elemento coincidente que se encuentra dentro de la lista.

Convertir tuplas en listas y viceversa

Ya que hemos visto qué es una tupla y qué es una lista, conviene saber que tenemos dos métodos que permiten convertir tuplas en listas y viceversa.

list()

Para convertir una tupla en una lista contamos con el método list. ¿Cómo se utiliza este método? Pues podemos crear, por ejemplo, una lista a la cual podemos denominar mi_lista y decirle que es igual a list de la tupla que queremos convertir.

>>> mi_tupla = ("Lucio", "BocaNegra", "MariMisi", "Ramón")
>>> mi_lista = list(mi_tupla)

Lo que hemos hecho es almacenar en esa variable una lista que la hemos construido a partir de la tupla que ya teníamos. Ahora si nosotros le decimos print mi_tupla y print mi_lista, vemos como efectivamente lo que imprime es una tupla que reconocemos por los paréntesis, y una lista que reconocemos por los corchetes.

>>> print(mi_tupla)
('Lucio', 'BocaNegra', 'MariMisi', 'Ramón')         
>>> print(mi_lista)
['Lucio', 'BocaNegra', 'MariMisi', 'Ramón']

tuple()

El método para realizar el proceso inverso, es decir convertir una lista en tupla, es el método tuple. Vamos a ver un ejemplo rápido:

>>> mi_lista = ["Lucio", "BocaNegra", "MariMisi", "Ramón"]
>>> mi_tupla = tuple(mi_lista)

Hemos hecho lo contrario de lo que acabamos de hacer hace un instante. Si nosotros le decimos que imprima la tupla, vemos como nos la imprime con paréntesis. Hemos convertido lo que era una lista en una tupla y lo hemos almacenado dentro de mi_tupla.

Otras operaciones con tuplas

Comprobar si un elemento está en la tupla con in

Hemos visto que las tuplas sí que permiten algo que va a ser muy útil en el futuro, comprobar si hay elementos dentro de una tupla y eso lo conseguimos con la instrucción in. Si nosotros le decimos que compruebe si una cadena de caracteres se encuentra dentro de la tupla, pues diríamos:

>>> print("MariMisi" in mi_tupla) 
True

.count()

Hay un método que permite realizar algo muy parecido, que es el método que el método count. Nos permite averiguar cuántos elementos determinados se encuentran dentro de una tupla. ¿Cómo utilizamos este método? pues de la siguiente forma. Imaginaos que le quiero preguntar cuántas veces se encuentra el elemento «Lucio» dentro de lo que sería la tupla:

print(mi_tupla.count("Lucio")) 
1

Creamos una nueva tupla para ver otro ejemplo del método count().

>>> otra_tupla = (17, "BocaNegra", 17, True, 28.36, 17)
print(otra_tupla.count(17)) 
3

len()

Otro método que puede ser muy útil y necesitaremos en un futuro, sobre todo a la hora de utilizar bucles, es el método en el método len, que nos permite averiguar la longitud de una tupla. De esta forma, si le decimos: print, len, abrimos los paréntesis del método y dentro la tabla de la que queremos averiguar la longitud.

>>> print(len(otra_tupla))
6

Tuplas unitarias

Es posible también crear lo que se denominan tuplas unitarias. Esto es una tupla con un único elemento, y es muy importante colocar una coma a continuación del elemento a almacenar. Si no ponemos esta coma no estamos hablando de una tupla unitaria.

>>> tupla_unitaria = ("texto",)
>>> print(tupla_unitaria)
('texto',)

Podemos imprimir la longitud de esta tupla para ver que efectivamente tiene un único elemento.

>>> print(len(tupla_unitaria))
1

Empaquetado de tupla

Si recordáis hemos dicho que a la hora de declarar o de crear una tupla los paréntesis son opcionales y eso es cierto, porque también podemos crear una tupla prescindiendo totalmente de los paréntesis.

>>> mi_tupla = "Lucio", "BocaNegra", "MariMisi", "Ramón"
>>> print(mi_tupla)
('Lucio', 'BocaNegra', 'MariMisi', 'Ramón')

Si decimos que imprima esta tupla vemos cómo se considera como una tupla porque le pone los paréntesis correspondientes.

Lo único que ocurre es que esta notación nos puede llevar a confusión cuando utilicemos funciones con parámetros y que reciben parámetros, y esto es algo que veremos más adelante. Por lo tanto, yo recomiendo siempre poner los paréntesis.

Escribir una tupla sin paréntesis se conoce como empaquetado de tupla, se dice que estamos empaquetando una tupla.

Desempaquetado de tupla

También tenemos el proceso inverso que es muy interesante, tenemos el proceso de desempaquetado de tupla y permite asignar todos los elementos que forman parte de una tupla a diferentes variables de una manera sencilla.

Vamos a declarar una tupla como lo haríamos normalmente, con sus paréntesis y antes de imprimir esa tupla lo que voy a hacer va a ser crear una serie de variables separadas por comas. El objetivo final es almacenar dentro de cada una de estas variables el valor correspondiente que tenemos dentro de una tupla.

>>> mi_tupla = ("Moisés", 27, 7, 1980)
>>> nombre, dia, mes, ano = mi_tupla

Es muy fácil en python utilizar lo que se llama desempaquetado de tuplas para decirle que las siguientes variables separadas por comas, es igual a la tupla que hemos creado y ya está. Con esto automáticamente lo que hace python es asignar cada uno de los valores de la tupla por orden a las variables declaradas.

Si hacéis la prueba le decís que imprima las diferentes variables, veréis que lo tiene perfectamente asignado.

>>> print(nombre)
'Moisés'
>>> print(dia) 
27
>>> print(mes)       
7
>>> print(ano)       
1980         

Bueno, pues todo esto respecto a las tuplas yo creo que tenemos las herramientas necesarias para poder trabajar ya con tuplas y en el siguiente artículo veremos los diccionarios. Así que os digo lo de siempre, os invito a que permanezcáis atentos a la próxima entrega. Hasta entonces, que os vaya bien.

Ir arriba

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar