Colecciones de Datos - Curso de Python - Hektor Profe

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

Colecciones de datos

Presentación
Python integra un montón de colecciones para manejar datos. Ya conocemos
las listas pero hay otros tipos que sirven para cubrir otras necesidades...

Tuplas
Son unas colecciones muy parecidas a las listas con la peculiaridad de que son
inmutables:

Código Resultado

tupla = (100,"Hola",[1,2,3],-50)
tupla

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 1/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

Indexación y slicing

Código Resultado

print(tupla)
print(tupla[0])
print(tupla[-1])
print(tupla[2:])
print(tupla[2][-1])

Inmutabilidad

Código Resultado

tupla[0] = 50

Función len(): Igual que si fuera una lista podemos utilizarla para saber la
longitud de una tupla:

Código Resultado

len(tupla)

Código Resultado

len(tupla[2])

Métodos integrados

index(): Sirve para buscar un elemento y saber su posición en la tupla:

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 2/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

Código Resultado

tupla.index(100)

Código Resultado

tupla.index('Hola')

Da error si no se encuentra:

Código Resultado

tupla.index('Otro')

count(): Sirve para contar cuantas veces aparece un elemento en una tupla:

Código Resultado

tupla.count(100)

Código Resultado

tupla.count('Algo')

Código Resultado

tupla = (100,100,100,50,10)
tupla.count(100)

append() ?: Al ser inmutables, las tuplas no disponen de métodos para modi car
su contenido:

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 3/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

Código Resultado

tupla.append(10)

Conjuntos
Son colecciones desordenadas de elementos únicos utilizados para hacer
pruebas de pertenencia a grupos y eliminación de elementos duplicados.

Para de nir un conjunto vacío hay que llamar a su clase set (conjunto en inglés):

Código Resultado

conjunto = set()
conjunto

Sin embargo si lo creamos con algunos datos se de nen entre llaves:

Código Resultado

conjunto = {1,2,3}
conjunto

Método add(): Sirve para añadir elementos al conjunto, pero si un elemento ya se


encuentra no se añadirá de nuevo:

Código Resultado

conjunto.add(4)
conjunto

Código Resultado

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 4/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

conjunto.add(0)
conjunto

Colecciones desordenadas

Se dice que son desordenados porque gestionan automáticamente la posición


de sus elementos, en lugar de conservarlos en la posición que nosotros los
añadimos:

Código Resultado

conjunto.add('H')
conjunto.add('A')
conjunto.add('Z')
conjunto

Pertenencia a grupos

Código

grupo = {'Hector','Juan','Mario'}

Es fácil saber si un elemento se encuentra en un conjunto utilizando la sintaxis


in. Se utiliza mucho para trabajar con grupos:

Código Resultado

'Hector' in grupo

También se puede hacer la comprobación inversa con not in:

Código Resultado

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 5/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

'Hector' not in grupo

Elementos únicos

Los conjuntos no pueden tener el mismo elemento más de una vez, se borran los
duplicados automáticamente:

Código Resultado

test = {'Hector','Hector','Hector'}
test

Conversiones con listas

Es muy útil transformar listas a conjuntos para borrar los elementos duplicados
automáticamente y viceversa:

Código Resultado

lista = [1,2,3,3,2,1]

print(lista)

conjunto = set(lista)
lista = list(conjunto)

print(lista)

La conversión se puede hacer en una línea:

Código Resultado

lista = [1,2,3,3,2,1]
print(lista)

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 6/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

lista = list(set(lista))
print(lista)

Conversiones con cadenas

Hacer esta transformación sirve para crear un conjunto con todos los caracteres
de la cadena, pero sin duplicados:

Código Resultado

cadena = "Al pan pan y al vino vino"


set(cadena)

Diccionarios
Son junto a las listas las colecciones más utilizadas y se basan en una
estructura mapeada donde cada elemento de la colección se encuentra
identi cado con una clave única, por lo que no puede haber dos claves iguales.
En otros lenguajes se conocen como arreglos asociativos.

Los diccionarios se de nen igual que los conjuntos, utilizando llaves, pero
también se pueden crear vacíos con ellas:

Código Resultado

vacio = {}
vacio

Si consultamos el tipo de la variable que contiene un diccionario con la función


type() encontraremos la palabra dict, esa es la clase que de ne los diccionarios:

Código Resultado

type(vacio)

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 7/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

De nición

Para cada elemento se de ne la estructura clave:valor:

Código Resultado

colores = {'amarillo':'yellow','azul':'blue'}
colores

Para consultar el valor de una clave utilizaremos la clave a modo de índice:

Código Resultado

colores['amarillo']

Mutabilidad

Los diccionarios son mutables, por lo que se les puede añadir elementos sobre
la marcha a través de las claves:

Código Resultado

colores['verde'] = 'green'
colores

Como los diccionarios son mutables también podemos sobreescribir un valor:

Código Resultado

colores['amarillo'] = 'white'
colores

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 8/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

Función del(): Sirve para borrar un elemento del diccionario:

Código Resultado

del(colores['amarillo'])
colores

Por cierto, las claves también pueden ser números, pero son un poco confusas:

Código Resultado

numeros = {10:'diez',20:'veinte'}
numeros[10]

Una utilidad de los diccionarios es que podemos trabajar directamente con sus
registros como si fueran variables:

Código Resultado

edades = {'Hector':27,'Juan':45,'Maria':34}
edades['Hector']+=1
edades

Código Resultado

edades['Juan'] + edades['Maria']

Lectura secuencial

Es posible utilizar iteraciones for para recorrer los elementos del diccionario:

Código Resultado

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 9/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

edades = {'Hector':27,'Juan':45,'Maria':34}

for edad in edades:


print(edad)

El problema es que se devuelven las claves en lugar de los valores. Para


solucionarlo deberíamos indicar la clave del diccionario para cada elemento:

Código Resultado

for clave in edades:


print(edades[clave])

Si queremos mostrar tanto la clave como el valor podríamos hacerlo así:

Código Resultado

for clave in edades:


print(clave,edades[clave])

El método .items() nos facilita la lectura en clave y valor de los elementos.


Devuelve ambos valores en cada iteración automáticamente y nos permite
almacenarlos:

Código Resultado

for clave, valor in edades.items():


print(clave, valor)

Listas de diccionarios

Podemos crear nuestras propias estructuras avanzadas mezclando ambas


colecciones. Mientras los diccionarios se encargarían de manejar las

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 10/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

propiedades individuales de los registros, las listas nos permitirían manejarlos


todos en conjunto:

Código Resultado

personajes = []

gandalf = {'Nombre':'Gandalf','Clase':'Mago','Raza':'Humano'}
legolas = {'Nombre':'Legolas','Clase':'Arquero','Raza':'Elfo'}
gimli = {'Nombre':'Gimli','Clase':'Guerrero','Raza':'Enano'}

personajes.append(gandalf)
personajes.append(legolas)
personajes.append(gimli)

print(personajes)

Como ahora tenemos una estructura común a través de diccionarios, podemos


suponer que cada diccionario es un personaje y mostrar los registros mientras
los recorremos dinámicamente con un for:

Código Resultado

for pesonaje in personajes:


print(pesonaje['Nombre'], pesonaje['Clase'],
pesonaje['Raza'])

 Curiosidades

Un alumno me dijo que Gandalf no es humano, disculpadme por tal ofensa 🙇🙇🙇

Pilas
Son colecciones de elementos ordenados que únicamente permiten dos
acciones:

Añadir un elemento a la pila.

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 11/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

Sacar un elemento de la pila.

La peculiaridad es que el último elemento en entrar es el primero en salir. En


inglés se conocen como estructuras LIFO (Last In First Out).

Las podemos crear como listas normales y añadir elementos al nal con el
append():

Código Resultado

pila = [3,4,5]
pila.append(6)
pila.append(7)
print(pila)

Para sacar los elementos utilizaremos el método pop(). Al utilizareste método


devolveremos el último elemento, pero también lo borraremos:

Código Resultado

print(pila.pop())
print(pila)

Si queremos trabajar con él deberíamos asignarlo a una variable:

Código Resultado

numero = pila.pop()
print(numero)

Si vamos sacando elementos llegará un momento en que la pila estará vacía y


dará error porque no podrá sacar nada más:

Código Resultado

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 12/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

pila.pop()
pila.pop()
pila.pop()
pila.pop()

Colas
Son colecciones de elementos ordenados que únicamente permiten dos
acciones:

Añadir un elemento a la cola.

Sacar un elemento de la cola.

La peculiaridad es que el primer elemento en entrar es el primero en salir. En


inglés se conocen como estructuras FIFO (First In First Out).

Debemos importar la colección deque manualmente para crear una cola:

Código Resultado

from collections import deque


cola = deque()
print(cola)

Podemos añadir elementos al crear la cola pasándolos en una lista:

Código Resultado

cola = deque(['Hector','Juan','Miguel'])
print(cola)

Luego podemos seguir añadiéndolos utilizando el método append():

Código Resultado

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 13/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

cola.append('Maria')
cola.append('Arnaldo')
print(cola)

La parte interesante es a la hora de sacar los elementos, pues en esta ocasión


utilizaremos el método popleft(). Hace lo mismo que pop() pero los extrae por la
parte izquierda, que sería el principio de la cola:

Código Resultado

print(cola.popleft())
print(cola)

Además al igual que antes debemos asegurarnos de almacenar los elementos al


sacarlos o los perderemos:

Código Resultado

persona = cola.popleft()
print(persona)
print(cola)

Ejercicios optativos
1) Realiza un programa que siga las siguientes instrucciones:

Crea un conjunto llamado usuarios con los usuarios Marta, David, Elvira,
Juan y Marcos

Crea un conjunto llamado administradores con los administradores Juan y


Marta.

Borra al administrador Juan del conjunto de administradores.

Añade a Marcos como un nuevo administrador, pero no lo borres del


conjunto de usuarios.

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 14/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

Muestra todos los usuarios por pantalla de forma dinámica, además debes
indicar cada usuario es administrador o no.

 Sugerencia

Los conjuntos se pueden recorrer dinámicamente utilizando el bucle for de forma similar a una
lista.
También cuentan con un método llamado .discard(elemento) que sirve para borrar o descartar
un elemento.

Ejercicio Solución Resultado

# Espacio reservado para no mostrar la solución

2) Durante el desarrollo de un pequeño videojuego se te encarga con gurar y


balancear cada clase de personaje jugable. Partiendo que la estadística base es
2, debes cumplir las siguientes condiciones:

El caballero tiene el doble de vida y defensa que un guerrero.

El guerrero tiene el doble de ataque y alcance que un caballero.

El arquero tiene la misma vida y ataque que un guerrero, pero la mitad de su


defensa y el doble de su alcance.

Muestra como quedan las propiedades de los tres personajes.

Ejercicio Solución Resultado

caballero = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }


guerrero = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }
arquero = { 'vida':2, 'ataque':2, 'defensa': 2, 'alcance':2 }

# Completa el ejercicio aquí

3) Durante la plani cación de un proyecto se han acordado una lista de tareas.


Para cada una de estas tareas se ha asignado un orden de prioridad (cuanto
menor es el número de orden, más prioridad).

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 15/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

¿Eres capaz de crear una estructura del tipo cola con todas las tareas ordenadas
pero sin los números de orden?

 Sugerencia

Para ordenar automáticamente una lista es posible utilizar el método .sort(), deberias probarlo.

Ejercicio Solución Resultado

tareas = [
[6, 'Distribución'],
[2, 'Diseño'],
[1, 'Concepción'],
[7, 'Mantenimiento'],
[4, 'Producción'],
[3, 'Planificación'],
[5, 'Pruebas']
]

print("==Tareas desordenadas==")
for tarea in tareas:
print(tarea[0], tarea[1])

# Completa el ejercicio aquí

Última edición: 23 de Septiembre de 2018

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 16/17
2/10/2018 Colecciones de datos | Curso de Python | Hektor Profe

https://www.hektorprofe.net/python/colecciones-de-datos/#tuplas 17/17

También podría gustarte