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
tuplePodemos 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()
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