Autor: Pablo Cerrillo Ruiz.
Última modificación: 26 de junio de 2019.
Jupyter Notebook es un entorno de trabajo interactivo que permite desarrollar código de manera dinámica. Ahora mismo nos encontramos en el cuaderno UD Estructuras de datos, cuya finalidad es enseñar al alumno las diferentes estructuras de datos en Python y la utilidad que éstas tienen en el mundo de la programación.
Recuerde que para ejecutar el contenido de una celda basta con pulsar el botón Run del panel de control. También puede pulsar al mismo tiempo las teclas Mayúsculas+Enter
Una vez vistos los tipos de datos básicos del lenguaje de programación en Python (int, float, bool, complex, str ), puede ser que necesitemos realizar algún tipo de agrupación de éstos debido a lo que puedan representar en conjunto. Por ejemplo, imagine que tenemos que almacenar la temperatura de los últimos 5 días, una solución podría ser la siguiente:
''' Definiendo la temperatura de los últimos 5 días con distintas varibles'''
temperatura_dia_1 = 22.3
temperatura_dia_2 = 25.2
temperatura_dia_3 = 23.8
temperatura_dia_4 = 27.9
temperatura_dia_5 = 30.0
Como vemos, hemos creado 5 variables, una por cada día, para almacenar la temperatura. Esto supone un problema debido a que si quiesieráramos almacenar la temperatura de más días, tendríamos que modificar el código y añadir más variables. Para solucionar este problema, podemos usar las estructuras de datos de Python. Las 4 estructuras de datos más utilizadas en Python son:
Las listas son secuencias ordenadas de cero o más elementos. Los listas son un tipo de dato mutable, es decir, podemos modificiar, añadir o borrar elementos de la lista.
Podemos crear una lista de dos formas diferentes: mediante la función list() o mediante el uso de [ ] en la asignación a una variable. Veamos un ejemplo:
Ejemplo: Creación de listas en Python.
''' Creación de listas de Python '''
# Creación de una lista vacía mediante la función list()
lista_uno = list()
# Creación de una lista vacía mediante el operador [ ]
lista_dos = [ ]
# Creación de una lista con elementos de un mismo tipo de dato mediante el operador [ ]
lista_tres = [2, 4, 7, 1, 2, 9]
# Creación de una lista
lista_cuatro = ['Hola', 2, 5.3, True, 'Mundo']
# Podemos imprimir el contenido entero de una lista mediante la función print
print(lista_uno)
print(lista_dos)
print(lista_tres)
print(lista_cuatro)
Como hemos podido ver, las listas admiten elementos de diferentes tipos de datos.
Crear dos listas, una lista vacía y otra lista con el nombre de 5 asignaturas que conozcas. Imprime el contenido de las listas utilizando la función print.
''' Crear dos listas en imprimir el contenido de dichas listas. '''
# Crear aquí una lista vacía
lista_vacia =
# Crear una lista que contenga el nombre de 5 asignaturas
lista_asignaturas =
# Imprimir aquí el contenido de las dos listas
print()
print()
Anteriormente hemos visto que podemos imprimir el contenido de toda la lista mediante la función print pero ¿Y si necesitamos obtener un elemento en concreto de la lista?. Python proporciona la posibilidad de acceder a ellos mediante el operador [ ]. A continuación, vamos a crear una lista:
# Creación de una lista
lista_ejemplo = ['Hola', 2, 5.3, True, 'Mundo']
# Podemos imprimir el contenido entero de una lista mediante la función print
print(lista_ejemplo)
En la siguiente imagen podemos ver una representación gráfica de la lista, donde se especifican los índices para acceder a los elementos de la lista creda anteriormente:
Como podemos observar, tenemos dos formas de acceder a un elemento, mediante su índice o su índice inverso. Vamos a acceder al segundo elemento de la lista creada anteriormente de las dos formas:
''' Acceso al segundo elemento de la lista "lista_ejemplo" '''
# Creación de una lista
lista_ejemplo = ['Hola', 2, 5.3, True, 'Mundo']
print(lista_ejemplo[1]) # accedemos al segundo elemento de la lista con su índice
print(lista_ejemplo[-4]) # accedemos al segundo elemento de la lista con su índice inverso
Podemos consultar el número de elementos de una lista mediante la función len de Python. Dicha función se puede utilizar con cualquier elemento iterable como listas, tuplas, conjuntos o cadenas de texto.
len(lista_ejemplo)
Un operador fundamental en el uso de estructuras de datos es el operador in. El operador in nos indica si un elemento se encuentra o no la estructura de datos que especifiquemos.
''' Acceso al segundo elemento de la lista "lista_ejemplo" '''
# Creación de una lista
lista_ejemplo = ['Hola', 2, 5.3, True, 'Mundo']
print('Hola' in lista_ejemplo) # comprobamos si 'Hola' se encuentra en la lista
print( 5 in lista_ejemplo) # comprobamos si 5 se encuentra en la lista
En el siguiente ejercicio vamos a crear una lista con el nombre de 5 asignaturas diferentes. Después imprimiremos aquellas que se encuentran en posición impar mediante su indice normal y las que se encuentran en una posición par con su índice inverso.
''' Crea una lista que contenga los nombres de 5 comidas diferentes '''
comidas = []
# Vamos a imprimir cada uno de los elementos
print( ) # el primer elemento mediante su índice normal
print( ) # el segundo elemento mediante su índice inverso
print( ) # el tercer elemento mediante su índice normal
print( ) # el cuarto elemento mediante su índice inverso
print( ) # el quinto elemento mediante su índice normal
# Imprime el número de elementos que contiene la lista
# Comprueba si 'pizza' se encuentra en la lista comidas
Es posible que tengamos la necesidad de obtener más de un elemento de una lista, es decir, una sublista. Una sublista es un conjunto de elementos más pequeño de la lista original.
Para ello, Python permite indicar dentro del operador [ ] rangos de índices. A continuación, se muestra una imagen para describir las posibles características que se ofrecen:
Donde:
Veamos un ejemplo:
''' Obteniendo diferentes sublistas a partir de una lista '''
deportes = ["Fútbol", "Baloncesto", "Tenis", "Bádminton", "Balonmano", "Padel", "Rugby"] # lista original
# imprimimos la lista original
print("\n Lista original ", deportes)
# imprimimos los tres primeros deportes
print("\n Los tres primeros deportes de la lista son ", deportes[0:3])
print(" Los tres primeros deportes de la lista son ", deportes[-7:-4]) # En este caso, utilizamos los índices inversos
# imprimimos los tres últimos deportes
print("\n Los tres últimos deportes de la lista son ", deportes[4:7])
# obtenemos la lista vacía si especificamos rangos cuyo valor final sea menor o igual que el inicial
print("\n Obtenemos la lista vacía ", deportes[7:-4])
print(" Obtenemos la lista vacía ", deportes[1:1])
¡CUIDADO! ya que si se nos olvida especificar el índice de inicio, Python da por sentado que estamos especificando el primer índice (0). Lo mismo ocurre con el índice final, si no se especifica, Python lo establece como el índice final de la lista.
''' Obteniendo diferentes sublistas a partir de una lista '''
deportes = ["Fútbol", "Baloncesto", "Tenis", "Bádminton", "Balonmano", "Padel", "Rugby"] # lista original
# imprimimos la lista original
print("\n Lista original ", deportes)
# imprimimos los tres primeros deportes
print("\n Los tres primeros deportes de la lista son ", deportes[:3])
# imprimimos los tres últimos deportes
print("\n Los tres últimos deportes de la lista son ", deportes[4:])
# Si no especificamos nada, nos devolverá la lista original
print("\n Obtenemos la lista original ", deportes[:])
Como podemos observar, una vez especificados el índice inicial y el final, vamos incrementado el valor inicial hasta quedarnos en el índice fin - 1, pero ¿Y si queremos recorrer la lista al revés o hacer que el índice incremente de otra forma?. Entonces deberíamos indicar el incremento en la notación slice de la siguiente forma:
Donde:
Ejemplo: Obtención de sublistas mediante la notación slice.
''' Obteniendo diferentes sublistas a partir de una lista '''
asignaturas = ["Historia", "Matemáticas", "Lengua", "Inglés", "Francés", "Informática"] # lista original
# imprimimos los deportes en una posición de índice impar
print("\n Las asignaturas de la lista en una posición con índice impar son ", asignaturas[1::2])
# imprimimos los deportes en una posicion de índice par
print("\n Las asignaturas de la lista en una posición con índice par son", asignaturas[::2])
De esta forma, tenemos una mayor flexibilidad para obtener sublistas, ya que nos permite incluso obtener una lista de forma inversa, realizando decrementos:
''' Obteniendo diferentes sublistas a partir de una lista '''
asignaturas = ["Historia", "Matemáticas", "Lengua", "Inglés", "Francés", "Informática"] # lista original
# En esta ocasión realizaremos un decremento
print("\n Las asignaturas en una posición impar de la lista son ", asignaturas[-2:-5:-1])
En este ejercicio vamos a trabajar con sublistas. Para ello, se proporciona una lista, sobre la cuál se deberán obtener las sublistas que se especifican.
''' Obtener las sublistas especificadas '''
# Lista original
videojuegos = ['Batman: Arkham City', 'Pokémon', 'Phoenix Wright', 'Mario Kart', 'FIFA 19', 'Metal Gear V', 'Brain Training']
# Nº1 Sublista que contenga los videojuegos en un índice de posición par
print("\n La sublista nº1 es: ", )
# Nº2 Sublista que contenga los videojuegos en un índice de posición par
print("\n La sublista nº2 es: ", )
# Nº3 Sublista que contenga los videojuegos en un índice de posición par
print("\n La sublista nº3 es: ", )
# Nº4 Sublista que los dos primeros elementos y los dos últimos
print("\n La sublista nº4 es: ", )
# Nº5 Sublista que contenga los videojuegos en un índice de posición impar
print("\n La sublista nº5 es: ", )
# Nº6 lista inversa a la original
print("\n La lista inversa nº6 es: ", )
# Nº7 Sublista que contenga los videojuegos con un índice impar negativo.
print("\n La sublista nº7 es: ", )
Llegados a este punto, ya sabemos crear listas y obtener elementos de un lista. Además de eso, Python permite modificar elementos de una lista, añadiendo nuevos elementos a la lista o eliminar elementos de la misma.
Para modificar un elemento de una lista, lo único que debemos hacer es asignar un valor a una posición indicada de la lista.
''' Modificando un elemento de una lista '''
# Definimos una lista
asignaturas = ["Historia", "Matemáticas", "Lengua", "Inglés", "Francés", "Informática"]
print("\n",asignaturas)
# modificamos el primer elemento de la lista
asignaturas[0] = "Filosofía"
print("\n",asignaturas)
En este ejercicio vamos a cambiar un elemento de nuestra lista de la compra.
''' Modificando elementos a una lista de la compra '''
# lista de la compra para realizar una tortilla de patatas
lista_compra = ['patatas', 'huevos', 'aceite de girasol', 'cebolla']
'''
Vamos a sustituir el aceite de girasol por el aceite de oliva,
para ello, modificar el valor de la posición 2 de la lista
'''
print() # imprimimos la lista de la compra
Python proporciona los siguientes métodos para insertar elementos en una lista:
Método | Descripción |
---|---|
append(X) | Añade el elemento X al final de la lista. |
insert(i,X) | Añade el elemento X en la posición i de la lista. |
Ejemplo: Añadir elementos a una lista creada.
''' Añadiendo elementos a una lista '''
# Creamos una lista
objetos_mochila = ['portátil','cargador','libreta']
# añadimos mediante el método append al final de la lista el elemento 'bolígrafo'
objetos_mochila.append('bolígrafo')
# añadimos en la posición 0, es decir al principio, elemento 'libro'
objetos_mochila.insert(0,'libro')
print(objetos_mochila) # imprimimos la lista para ver el resultado final
En este ejercicio vamos a utilizar las funciones para insertar elementos en una lista, para ello, se deberán añadir los elementos que se especifican a la lista que se proporciona e imprimir una vez hayamos realizado dichas inserciones.
''' Añadiendo elementos a una lista de la compra '''
# lista de la compra para realizar una tortilla de patatas
lista_compra = ['patatas','huevos']
# Se me olvidó apuntar el aceite de oliva, añadirlo mediante el uso de la función append
# Un poco de cebolla no vendría mal, añade cebolla en una posición intermedia para que no se nos olvide
print() # imprimir la lista de la compra
Python proporciona los siguientes métodos para insertar eliminar en una lista:
Método | Descripción |
---|---|
pop() | Devuelve y elimina el último elemento de la lista. |
pop(i) | Devuelve el elemento en la posición i-ésima, es decir lista[i], y lo elimina de la lista. |
clear() | Elimina todos los elementos de la lista. |
Ejemplo: Eliminar elementos de una lista creada.
''' Eliminar elementos de una lista '''
# Creamos una lista
objetos_mochila = ['portátil','cargador','libreta','bolígrafo','libro']
objetos_mochila.pop() # Eliminamos el último elemento de la lista
objetos_mochila.pop(1) # Eliminamos el elemento en la posición 1
print("\n",objetos_mochila) # imprimimos la lista para ver el resultado final
objetos_mochila.clear() # Eliminamos todos los elementos de la lista
print("\n",objetos_mochila) # imprimimos la lista para ver el resultado final
¡Vaya! Alguien ha modificado nuestra lista de la compra y ha añadido productos que no son necesarios para nuestra tortilla de patatas. Vamos a utilizar las funciones para eliminar elementos en una lista, para ello, se deberán añadir los elementos que se especifican a la lista que se proporciona e imprimir una vez hayamos realizado dichas inserciones.
''' Eliminando elementos a una lista de la compra '''
# lista de la compra para realizar una tortilla de patatas
lista_compra = ['macarrones', 'patatas', 'huevos', 'aceite de oliva', 'oreo', 'cebolla', ' ketchup']
# Vamos a eliminar el último elemento de la lista, para ello, utilizaremos el metodo pop()
# Ahora utilizaremos la variante pop(i) para eliminar los elementos en la posición 1 y 4
print() # imprimimos la lista de la compra
# Acabamos de terminar de realizar la compra, borra todos los elementos de la lista
Las tuplas son secuencias ordenadas de cero o más elementos. La única diferencia respecto a las lista es que una tupla es inmutable. Esto implica que una vez creada la tupla, no podemos modificar su contenido.
Existen diferentes formas para crear tuplas. Las más usuales son utilizando la función tuple,mediante un conjunto de elementos separados por comas dentro de paréntesis ( ) o un conjunto de elementos separados por comas.
Ejemplo: Creación de tuplas en Python.
''' Creación de tuplas de Python '''
# Creación de una tupla vacía mediante la función tuple()
tupla_uno = tuple()
# Creación de una tupla vacía mediante el operador [ ]
tupla_dos = ()
# Creación de una tupla con elementos de un mismo tipo de dato mediante el operador ()
tupla_tres = (2, 4, 7, 1, 2, 9)
# Creación de una tupla
tupla_cuatro = ('Hola', 2, 5.3, True, 'Mundo')
# creación de una tupla
tupla_cinco = 'Hola',3,2,5,1,'Mundo'
# Podemos imprimir el contenido entero de una lista mediante la función print
print(tupla_uno)
print(tupla_dos)
print(tupla_tres)
print(tupla_cuatro)
print(tupla_cinco)
¡Cuidado! si queremos crear una tupla utilizando paréntesis con un solo elemento, debemos añadir una coma.
''' Creación de tuplas de Python '''
# Creación de una tupla vacía mediante la función list()
tupla_uno = (5,)
# Creación de una tupla vacía mediante el operador [ ]
tupla_dos = (8)
# Podemos imprimir el contenido entero de una lista mediante la función print
print(tupla_uno, "es de tipo ", type(tupla_uno))
print(tupla_dos, "es de tipo ", type(tupla_dos))
Como podemos observar, si no añadimos una coma dentro del paréntesís, al crear una tupla de un elemento, Python interpreta que se trata solamente de un número entero. He ahí la importancia de la coma.
En este ejercicio vamos a crear varias tuplas. Para ello completar el código que se propone a continuación:
''' Completar el código para crear las tuplas que se proponen '''
# Crear una tupla vacía
tupla_vacia =
# Crear una tupla con un elemento que contenga el nombre de tu comida favorita
comida_favorita =
# Crear una tupla que contenga los ingredientes que más te gustan en una pizza
ingredientes_favoritos =
# Imprimir las tuplas
print()
print()
print()
Al igual que ocurre con las listas, Python proporciona la posibilidad de acceder a ellos mediante el operador []. A continuación, vamos a crear una lista:
mi_tupla = ('Hola', 'Mundo', 2.3, 7.3, 'Mundo')
print(mi_tupla)
En la siguiente imagen podemos ver una representación gráfica de la tupla, donde se especifican los índices para acceder a los elementos de la lista creda anteriormente:
Como podemos observar, tenemos dos formas de acceder a un elemento, mediante su índice o su índice inverso. Vamos a acceder al segundo elemento de la lista creada anteriormente de las dos formas:
''' Acceso al segundo elemento de la lista "lista_ejemplo" '''
mi_tupla = ('Hola', 'Mundo', 2.3, 7.3, 'Mundo')
print(mi_tupla[1]) # accedemos al segundo elemento de la lista con su índice
print(mi_tupla[-4]) # accedemos al segundo elemento de la lista con su índice inverso
Podemos consultar el número de elementos de una tupla mediante la función len() de Python. Dicha función se puede utilizar con cualquier elemento iterable como listas, tuplas, conjuntos o cadenas de texto.
mi_tupla = ('Hola', 'Mundo', 2.3, 7.3, 'Mundo')
len(mi_tupla) # devuelve el número de elementos de la tupla
Un operador fundamental en el uso de estructuras de datos es el operador in. El operador in nos indica si un elemento se encuentra o no la estructura de datos que especifiquemos.
mi_tupla = ('Hola', 'Mundo', 2.3, 7.3, 'Mundo')
esta = 5 in mi_tupla
print(esta)
Al igual que pasaba con las listas, es posible que tengamos la necesidad de obtener más de un elemento de una tupla, es decir, una subtupla. Una subtupla es un conjunto de elementos más pequeño de la tupla original. Para ello, utilizaremos la notación slice con las tuplas de la misma forma que con las listas.
Donde:
Ejemplo: Obtener subtuplas a partir de una tupla.
''' Obteniendo diferentes subtuplas a partir de una tupla '''
asignaturas = ("Historia", "Matemáticas", "Lengua", "Inglés", "Francés", "Informática") # Tupla original
# imprimir las asignaturas Matemáticas, Lengua e Inglés
print("\n Imprimir las asignaturas Matemáticas, Lengua e Inglés: ", asignaturas[1:4])
# imprimimos los deportes en una posición de índice impar
print("\n Las asignaturas de la tupla en una posición con índice impar son: ", asignaturas[1::2])
# imprimimos los deportes en una posicion de índice par
print("\n Las asignaturas de la tupla en una posición con índice par son: ", asignaturas[::2])
# imprimimos tupla al revés
print("\n La tupla al revés: ", asignaturas[::-1])
En este ejercicio vamos a utilizar la funcionalidad vista anteriormente acerca del acceso a elementos de una tupla. Para ello, completa el código siguiendo las instrucciones.
''' Tuplas y notación slice '''
# tupla_original
numeros = (1,2,3,4,5,6,7,8,9,10)
# Imprimir los elementos que se encuentra en la posición 4 y -4
print( )
print( )
# Asignarle a pares los elementos pares de tupla original utilizando la notación slice
pares =
# Asignarles a impares los elementos impares de la tupla original en orden descendente utilizando la notacion slice
impares =
# Comprueba si 5 se encuentra contenido en pares
encontrado =
print(encontrado)
# Imprime el número de elementos que contiene pares e impares
print()
print()
Los conjuntos son colecciones desordenadas de cero o más elementos. Al igual que las listas, son un tipo de dato mutable. Esto implica que una vez creado el conjunto podemos modificar, añadir y eliminar elementos de nuestro conjunto. Cabe destacar que los conjuntos no admiten repeticiones.
Podemos crear un conjunto vacío con la función set o crear un conjunto que contenga elementos mediante una sucesión de elementos separados por comas dentro de los operadores { }.
Ejemplo: Creación de conjuntos en Python
''' Creación de conjuntos en Python '''
a = set() # Con set() podemos crear un conjunto vacío
b = {1,2,3,4,5,6,7,8,9,10} # conjunto que contiene los números del 1 al 10
c = {"hola", 2, 3.4, True} # conjunto con diferentes tipos de datos
d = {1,7,1,7,5,2,2,6,3,3} # conjunto con repeticiones, las cuales serán eliminadas
# imprimimos los diferentes conjuntos
print(a)
print(b)
print(c)
print(d)
En este caso, no podemos crear un conjunto vacío mediante el uso de llaves { }, ya que Python lo interpreta como la creación de un diccionario.
''' Creación de conjuntos en Python '''
a = set() # Con set() podemos crear un conjunto vacío
b = {} # diccionario vacío
# imprimimos el tipo de dato de cada variable
print("a es del tipo ", type(a))
print("b es del tipo ", type(b))
Al igual que con las listas y las tuplas, utilizamos el método len( ) para comprobar el número de elementos que componen el conjunto y el operador in para comprobar si un elemento pertenece al conjunto.
''' Elementos de un conjunto '''
c = {"hola", 2, 3.4, True} # conjunto con diferentes tipos de datos
d = {1,7,1,7,5,2,2,6,3,3} # conjunto con repeticiones, las cuales serán eliminadas
esta = True in c # comprobamos si el elemento True se encuentra en el conjunto
esta_dos = 8 in d # comprobamos si el elemento 8 se encuentra en el conjunto
# imprimimos los conjuntos y el número de elementos de cada uno
print(c)
print(d)
print("El número de elementos del conjunto c es: ", len(c))
print("El número de elementos del conjunto d es: ", len(d))
print(esta)
print(esta_dos)
En este ejercicio vamos a utilizar las funcionalidades vistas anteriormente. Para ello, completa el código siguiendo las instrucciones.
''' Creación de conjuntos '''
# Crear dos conjuntos, uno vacío y otro con 6 nombre de personas
conjunto_vacio = {}
personas = {'pepe','maría'}
# Imprimir los conjuntos creados anteriormente
print(conjunto_vacio)
print(personas)
# Imprimir el número de elementos de cada uno de los conjuntos
# Comprobar si el nombre 'Pablo' se encuentra en el conjunto personas
Python proporciona los siguientes métodos para insertar y eliminar elementos en un conjunto:
Método | Descripción |
---|---|
add(x) | Añade el elemento x al conjunto si no se encuentra. |
discard(x) | Elimina el elemento x del conjunto. |
clear() | Elimina todos los elementos del conjunto. |
Ejemplo: Añadiendo y elemento elementos del conjunto
''' Añadiendo y eliminando elementos del conjunto '''
conjunto_asignaturas = {'Matemáticas', 'Lengua', 'Inglés'}
print("\n",conjunto_asignaturas)
# Añadimos un nuevo elemento 'Francés' 'Informática' y 'Matemáticas'
conjunto_asignaturas.add('Francés')
conjunto_asignaturas.add('Informática')
conjunto_asignaturas.add('Matemáticas')
print("\n",conjunto_asignaturas)
# Eliminamos las asignaturas 'Lengua', 'Inglés' e 'Historia'
conjunto_asignaturas.discard('Lengua')
conjunto_asignaturas.discard('Inglés')
conjunto_asignaturas.discard('Historia')
print("\n",conjunto_asignaturas)
# Eliminamos todos los elementos del conjunto
conjunto_asignaturas.clear()
print("\n",conjunto_asignaturas)
En este ejercicio vamos a poner en prueba los métodos para añadir y eliminar elementos de un conjunto. Para ello, completa el código del siguiente ejercicio.
''' Añadiendo y eliminado elementos del conjunto '''
a = {2,4,6,7,8,10}
# Añadir al conjunto a los elementos 1,5,11
# Imprimir el conjunto
# Eliminar del conjunto los elementos 2,6,10
# Imprimir el conjunto
Python proporciona métodos y operadores para realizar operaciones con conjuntos. En este apartado veremos las tres operaciones más usadas con conjuntos: unión, intersección y diferencia.
Sean A y B dos conjuntos, se define el conjunto A unión B como un nuevo conjunto donde tenemos todos los elementos del conjunto A junto con los elementos del conjunto B que no se encuentran en A.
En Python, utilizamos el operador | para realizar la unión de conjuntos.
Ejemplo: Unión de dos conjuntos.
''' Unión de conjuntos '''
# Definimos los conjuntos
A = {'a','b','c','d','e'}
B = {'a','e','i','o','u'}
C = A | B # calculamos la unión de los dos conjuntos
print(C) # Imprimimos el conjunto C
Sean A y B dos conjuntos, se define el conjunto A intersección B como un nuevo conjunto donde tenemos todos los elementos del conjunto A que aparecen también en el conjunto B.
En Python, utilizamos el operador & para realizar la intersección de conjuntos.
Ejemplo: Intersección de dos conjuntos.
''' Intersección de conjuntos '''
# Definimos los conjuntos
A = {'a','b','c','d','e'}
B = {'a','e','i','o','u'}
C = A & B # calculamos la intersección de los dos conjuntos
print(C) # Imprimimos el conjunto C
Sean A y B dos conjuntos, se define el conjunto A diferencia B como un nuevo conjunto donde tenemos todos los elementos del conjunto A que no aparecen en el conjunto B. Cuidado con esta operación, ya que A diferencia B es distinto a B diferencia A.
En Python, utilizamos el operador - para realizar la diferencia de conjuntos.
Ejemplo: Diferencia de dos conjuntos.
''' Diferencia de conjuntos '''
# Definimos los conjuntos
A = {'a','b','c','d','e'}
B = {'a','e','i','o','u'}
C = A - B # calculamos la diferencia de los dos conjuntos
D = B - A # calculamos la diferencia de los dos conjuntos
print(C) # Imprimimos el conjunto C
print(D) # Imprimimos el conjunto D
En este ejercicio vamos a probar las operaciones de unión, intersección y diferencia de conjuntos. Para ello, se proponen dos conjuntos de números, los cuales deberá rellenar y realizar las operaciones que se indican.
''' Completa el código del ejercicio '''
# Crear un conjunto que contenga los múltiplos de 2 del 0 al 10
A = {}
# Crear un conjunto que contenga los múltiplos de 3 del 0 al 10
B = {}
# Completa la sentencia para imprimir el conjunto A union B
print("\n La unión de los conjunto A y B es: ", )
# Completa la sentencia para imprimir el conjunto A union B
print("\n La intersección de los conjunto A y B es: ", )
# Completa la sentencia para imprimir el conjunto A union B
print("\n La diferencia del conjunto A respecto B es: ", )
# Completa la sentencia para imprimir el conjunto B diferencia A
print("\n La diferencia del conjunto B respecto A es: ", )
En Python, un diccionario es un conjunto de claves que tienen asociados diversos valores al igual que un diccionario convencional. Cada clave tendrá asociado un valor o conjunto de valores, que no tiene por que ser del mismo tipo de dato que los otros valores asociados a las claves. Cabe destacar que los diccionarios no tienen un orden establecido, ya que sus valores los obtenemos mediante la clave y no mediante la posición que ocupan.
En Python, para definir un diccionario, utilizamos llaves { } y dentro, pares de claves y valores que contendrá el diccionario. También podemos crear un diccionario mediante la función dict(). Veamos un ejemplo de uso.
Ejemplo: Creación de diccionarios.
''' Definimos un diccionario donde cada clave es el año de estreno y el valor la película '''
diccionario_vacio = dict() # Creación de un diccionario vacío
diccionario_vacio_2 = {} # Creación de un diccionario vacío
peliculas = {'2013': 'Iron man 3',
'2011': 'Thor',
'2016': 'Dr. Strange',
'2019': 'Capitana Marvel'
}
print(diccionario_vacio)
print(diccionario_vacio_2)
print(peliculas)
En este ejercicio vamos a poner en práctica las diferentes maneras de crear un diccionario. Para ello, completa el código del siguiente ejercicio.
''' Creación de diccionarios '''
# Crear un diccionario vacío
diccionario_vacio =
''' Crear un diccionario que contenga las claves y valores
'C1' tendrá asociado el valor 5
'C2' tendrá asociado la cadena 'Hola'
'C3' tendrá asociado la cadena 'Mundo'
'C4' tendrá asociado la lista [1,2,3,4,5,6,7,8,9,10]
'''
diccionario = {
}
Python proporciona métodos para gestionar de forma sencilla nuestros diccionarios. A continuación se muestran los métodos más utilizados para la gestión de diccionarios:
Método | Descripción |
---|---|
get('clave') | Devuelve el valor asociado a la clave introducida. |
pop('clave') | Devuelve el valor asociado a la clave introducida y elimina la entrada en el diccionario. |
update({'clave': 'valor'}) | Si la clave ya existe en el diccionario, actualiza su valor asociado. En otro caso, crea una nueva entrada |
Podemos obtener el valor asociado a una clave mediante el uso del método get o llamando al diccionario con el operador [ ] y la clave dentro.
''' Obteniendo valores del diccionario '''
peliculas = {'2011': 'Thor',
'2013': 'Iron man 3',
'2016': 'Dr. Strange',
'2019': 'Capitana Marvel'
}
# Vamos a obtener valores del diccionario
print( peliculas.get('2011') ) # Muestra como salida la cadena Thor
print( peliculas['2016'] ) # Muestra como salida Dr. Strange
La diferencia entre ambas formas radica en que pop borra la entrada que ha devuelto, mientras que get no la borra. Si la clave proporcionada no existiese en el diccionario mientras que el método get devolvería el valor None, el método pop devolvería un KeyError.
print( peliculas.get('2011') ) # Muestra como salida la cadena Thor
print( peliculas['2016'] ) # Muestra como salida Dr. Strange
Podemos añadir o actualizar el contenido de nuestro diccionario utilizando el método update o asignandole a una clave directamente y un valor.
Ejemplo: Añadiendo y actualizando elementos de un diccionario
''' Añadiendo y actualizando elementos de un diccionario '''
peliculas = {'2011': 'Thor',
'2013': 'Iron man 3',
'2016': 'Dr. Strange',
'2019': 'Capitana Marvel'
}
print("\n",peliculas) # imprimimos el contenido del diccionario
# Vamos a obtener valores del diccionario
peliculas.update({'2008':'Iron Man'}) # Insertamos un nuevo valor y clave
peliculas['2014'] = 'Guardianes de la Galaxia' # Insertamos un nuevo valor y clave
print("\n",peliculas) # imprimimos el contenido del diccionario
peliculas.update({'2008':'El increible Hulk'}) # Actualizamos la clave 2008 con el valor nuevo
peliculas['2019'] = 'Avengers 4: Endgame' # Actualizamos la clave 2019 con el valor nuevo
print("\n",peliculas) # imprimimos el contenido del diccionario
Podemos añadir o actualizar el contenido de nuestro diccionario utilizando el método pop.
Ejemplo: Eliminando elementos de un diccionario
''' Eliminando elementos de un diccionario '''
peliculas = {
'2011': 'Thor',
'2013': 'Iron man 3',
'2016': 'Dr. Strange',
'2019': 'Avengers 4: Endgame',
'2008': 'El increible Hulk',
'2014': 'Guardianes de la Galaxia'}
print("\n",peliculas) # imprimimos el contenido del diccionario
# Eliminamos la clave 2008 y 2014
peliculas.pop('2014')
peliculas.pop('2008')
print("\n",peliculas) # imprimimos el contenido del diccionario
En este ejercicio vamos a poner en práctica los diferentes métodos que permiten gestionar un diccionario en Python. Para ello, completa el código del siguiente ejercicio.
''' Trabajando con diccionarios '''
premios_BAFTA = {
'2003-2004' = 'Half-life 2',
'2007-2008' = 'Super Mario Galaxy',
'2009' = 'Batman Arkham Asylum',
'2013' = 'The Last of Us',
'2016' = 'Uncharted 4'
}
## Añadir a nuestro diccionario la clave '2018' con el valor asociado 'God of War'
## Consultar mediante el método get el valor de la clave 2007-2008
## Eliminar aquellos elementos del diccionario cuya clave sea menor al 2005
## Modificar el contenido de la clave 2016 para que sea igual a Uncharted 4: A Thief`s End
## Imprimir el diccionario
Una vez terminado el cuaderno, vamos a realizar un pequeño resumen acerca de lo visto hasta ahora:
EJERCICIO 1: ¿Sabrías decir cuál es la salida del siguiente código sin ejecutarlo?.
## Elimina las comillas para ejercutar el código y comprobar el resultado de salida.
'''
mi_lista = list()
mi_tupla = tuple()
mi_conjunto = set()
mi_diccionario = dict()
print(mi_lista)
print(mi_tupla)
print(mi_conjunto)
print(mi_diccionario)
'''
EJERCICIO 2: ¿Sabrías decir cuál es la salida del siguiente código sin ejecutarlo?.
## Elimina las comillas para ejercutar el código y comprobar el resultado de salida.
'''
estructura = {}
print(estructura)
print("\n",type(estructura))
'''
EJERCICIO 3: ¿Sabrías decir cuál es la salida del siguiente código sin ejecutarlo?.
## Elimina las comillas para ejercutar el código y comprobar el resultado de salida.
'''
mi_lista = [1,2,3,4,5,6,7,8,9,10]
mi_tupla = ('a','c','u','r','r','u','c','a')
print(mi_lista[::2])
print(mi_lista[2::3])
print(mi_tupla[::])
print(mi_tupla[-1:-9:-1])
'''
EJERCICIO 4: ¿Sabrías decir cuál es la salida del siguiente código sin ejecutarlo?.
## Elimina las comillas para ejercutar el código y comprobar el resultado de salida.
'''
primos = {1, 2, 3, 5, 7, 11, 13, 17}
primos.add(19)
primos.add(23)
primos.discard(2)
primos.discard(1)
print("\n",primos)
print("\n",type(primos))
'''
EJERCICIO 5: Realiza cambios en el la notación slice para imprimir los múltiplos de 3 mayores que o iguales que 10 y menores que 22.
## La salida debería ser [12,15,18,21]
multiplos_3 = (0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30)
print(multiplos_3[::])
EJERCICIO 6: Realiza cambios en el la notación slice para imprimir la lista de elementos en orden decreciente situados en índice impar
## La salida debería ser [23,17,11,5,2]
primos = (1, 2, 3, 5, 7, 11, 13, 17, 19, 23)
print(primos[::2])
EJERCICIO 7: Crear un diccionario donde la clave será el nombre del país y el valor asociado una lista con las 3 comidas típicas del país. Busca información acerca de la comida de los siguientes países y añadelos en el diccionario: España, Portugal, Francia e Italia.