Tema 9. Estructura de Datos. Tuplas

Explicación del uso de estructuras de datos tipo tuplas en Python 3.

Tupla

La última estructura que veremos son las tuplas. Éstas son un conjunto de elementos, que pueden ser de distintos tipos, separados por comas y escritos entre paréntesis, ().

Las tuplas son:

  • hetereogéneas: los elementos pueden ser de distinto tipo en una misma tupla

  • no mutables: los elementos no pueden ser modificados una vez la tupla ha sido creado

Un ejemplo de tupla sería:

t = ("Juan", 32, "profesor", True)
print(t)

#RESPUESTA
('Juan', 32, 'profesor', True)

Podemos declarar una tupla sin necesidad indicar sus elementos entre paréntesis

t = "Juan", 32, "profesor", True
type(t)

#RESPUESTA
tuple

Podemos declarar tuplas con la función tuple()

EJERCICIO 1:

Vamos a pedirle al usuario el número de números enteros que va a introducir por teclado. Para cada uno de esos números, vamos a crear una tupla donde la primera entrada sea el número entero y, la segunda, la palabra "positivo", "negativo" o "cero" según el signo del número entero. Vamos a guardar todas las tuplas en una lista y las vamos a mostrar.

EJERCICIO 2:

Vamos a pedirle al usuario números enteros del 1 al 10 hasta que introduzca el 0. Para cada uno de esos números, vamos a crear una tupla donde la primera entrada sea el número entero y, la segunda, la palabra "suspenso", "aprobado", "notable" o "excelente" según el intervalo al que pertenezca el número entero. Vamos a mostrar la tupla recién creada al usuario.

Las diferentes categorías son:

suspenso si la nota pertenece a [1, 5) aprobado si la nota pertenece a [5, 7) notable si la nota pertenece a [7, 9) excelente si la nota pertenece a [9, 10]

EJERCICIO 3:

Dada una frase introducida por el usuario, vamos a crear una lista con 3 tuplas de 2 entradas. La primera tupla contendrá el número de vocales; la segunda, el número de consonantes; y la última, el número de espacios en blanco. Para cada tupla, la primera entrada será un string explicativo y, la segunda, el valor correspondiente.

Elementos de una tupla

Podemos acceder a los elementos de una tupla mediante el índice que ocupan con la sintaxis de claudator, []

Al igual que con las listas, podemos acceder a los elementos de tuplas mediante el uso de índices negativos

Para acceder a múltiples entradas de una tupla a la vez, podemos utilizar la función : para indicar un intervalo de índices.

Observación. Recordad que

  • el índice indicado tras los dos puntos, :, nunca es incluido.

  • si no se indica índice a la izquierda de :, se considera desde el índice 0 hasta el inmediatamente anterior al indicado a la derecha de :

  • si no se indica índice a la derecha de :, se considera desde el índice indicado a la izquierda de : hasta el último elemento

También podemos usar índices negativos con la función :

Para saber si un elemento pertenece a una tupla, podemos usar la palabra clave in

Hemos dicho que las tuplas son inmutables. Esto es, una vez creada la tupla, sus elementos no pueden ser modificados

Una alternativa sería convertir a lista, realizar la modificación y reconvertir a tupla

EJERCICIO 4:

Vamos a pedirle al usuario una asignatura ("Mates", "Lengua", "Historia", "Informática" o "Música") y la nota en dicha asignatura hasta que introduzca una asignatura diferente a las indicadas. El usuario puede repetir una asignatura tantas veces como quiera. La nota tendrá que ser del 1 al 10. Guardaremos la información (asignatura, nota) en una tupla. Las tuplas serán guardadas en una lista. Finalmente, para cada asignatura, vamos a mostrar la nota media.

El método de unpacking

Podemos extraer los valores de una tupla en variables. Este proceso es conocido como unpacking.

Funciona igual si no declaramos las variables entre paréntesis.

¡Cuidado! El número de variables debe coincidir con el número de elementos de la tupla. De lo contrario, debe usarse un asterisco para guardar los elementos restantes en una lista.

Observación. Si el asterisco es añadido en alguna variable que no sea la última, Python almacenará tantos elementos en la lista como sea necesario para que el número de elementos restantes coincida con el número de variables restantes.

Podemos utilizar una barra baja en el caso de que no queramos que nos devuelva un dato.

EJERCICIO 5:

Vamos a pedirle al usuario el número de puntos de un plano que quiere introducir. Para cada punto, vamos a solicitarle las coordenadas x e y. Guardaremos las coordenadas (x, y) en tuplas de tamaño 3, donde la última entrada se corresponde con el cuadrante al que pertenece dicho punto. Todas las tuplas de tamaño 3 serán guardadas en una lista. Finalmente, mostraremos todas las tuplas de tamaño 3 creadas, con el formato "El punto ({x}, {y}) pertenece al cuadrante {cuadrante}"

Concatenación de tuplas

Podemos concatenar tuplas con la función +, aunque el resultado será una nueva tupla, ya que recordemos éstas no pueden ser modificadas

Repetición de tuplas

Podemos repetir tuplas un número $n$ de veces con la función *

Tamaño de una tupla

Podemos calcular el número de elementos de una tupla con la función len()

¡Cuidado! Si quisiésemos crear una tupla de un solo elemento, tendríamos que hacer lo siguiente

Bucles y tuplas

Podemos iterar una tupla utilizando un bucle for

También podemos usar la técnica de unpacking en los bucles

Tuplas y el resto de estructuras de datos

Una tupla puede contener listas, diccionarios, conjuntos y tuplas

Asimismo,

  • las listas pueden contener diccionarios, conjuntos, tuplas y otras listas

  • los diccionarios pueden contener listas, conjuntos, tuplas y otros diccionarios

  • los conjuntos no pueden contener ni listas, ni diccionarios, ni tuplas, ni siquiera otros conjuntos

Dado cualquier objeto iterable en Python, lo podemos convertir a tupla con la función tuple()

La función zip()

La función zip() sirve para juntar listas en tuplas

Podemos convertir el resultado de una función zip() a una lista

Podemos convertir el resultado de una función zip() a un diccionario

¡Cuidado! Hay que crear de nuevo el objeto zip(), pues el resultado de esta función es un iterador y, una vez ha sido convertido a lista, diccionario o tupla, se considera una iteración completa y no será capaz de generar más valores.

Podemos convertir el resultado de una función zip() a una tupla:

EJERCICIO 6:

Dada una lista de palabras, vamos a crear otra lista del mismo tamaño que guarde la primera letra de cada palabra en la posición correspondiente. Por último, con la función zip() crearemos una tupla de tuplas con la palabra en la primera entrada y la letra con la que empieza, en la segunda.

REPASO

Last updated