Quinto post de la serie del curso de Python. En el artículo anterior aprendimos a utilizar las variables. Hoy hablaremos de unos tipos de datos más complejos que nos permiten hacer cosas muy interesantes.
Para qué sirven las estructuras de datos
En el artículo anterior hablamos de variables numéricas, de texto y booleanas. Estas nos permiten crear una variable que almacena un valor de este tipo. Vamos a utilizar un ejemplo para entender bien los tipos de datos que hablaremos hoy. Nuestro ejemplo consistirá en una clase de universidad.
Imaginemos que tenemos un estudiante: Jaimito. Si quisiéramos guardar el nombre de Jaimito simplemente tendríamos que crear una variable e inicializarla con el nombre de Jaimito.
nombre = 'Jaimito'
De repente se han inscrito cuatro estudiantes más a nuestra clase, con lo que sabemos de momento, para almacenar sus nombres tendríamos que crear una variable para cada estudiante.
nombre_1 = 'Jaimito' nombre_2 = 'Juan' nombre_3 = 'Carla' nombre_4 = 'Valeria' nombre_5 = 'Irene'
Es un poco tedioso ¿no? Podemos utilizar las estructuras de datos de Python para facilitarnos mucho la vida.
Listas en Python
La lista es la estructura más sencilla que tenemos en Python. Se llama lista porque es exactamente esto, una lista :). En lugar de crear una variable para cada estudiante, podemos crear una sola variable que sea una lista con los nombres de los estudiantes.
estudiantes = ['Jaimito', 'Juan', 'Carla', 'Valeria', 'Irene']
Queda mucho más limpio y es muy sencillo de implementar.
Operaciones con listas
A parte de crear una lista, estaría bien que pudiéramos manipularla ¿verdad? Pues eso es justo lo que te voy a explicar ahora.
Las listas son ordenadas, esto quiere decir que podemos acceder a cada elemento individual utilizando su posición. Las posiciones en Python comienzan con el 0. Así que si quisiéramos acceder al estudiante Juan buscaríamos en la posición 1.
estudiantes = ['Jaimito', 'Juan', 'Carla', 'Valeria', 'Irene'] print(estudiantes[1])
Las listas permiten duplicados por lo que podríamos tener dos o más elementos con el mismo valor.
estudiantes = ['Jaimito', 'Juan', 'Jaimito', 'Carla', 'Valeria', 'Irene']
Podemos modificar el valor de un elemento de la lista utilizando su índice. Imaginemos que Carla abandona la clase y entrara Patricia en su lugar.
estudiantes = ['Jaimito', 'Juan', 'Carla', 'Valeria', 'Irene'] estudiantes[2] = 'Patricia'
Podemos añadir elementos a una lista con el método append.
estudiantes.append('Carlos')
Podemos obtener la longitud de una lista (el número de elementos que contiene) utilizando la función len.
print(len(estudiantes))
Una lista no tiene por qué contener un solo tipo de dato, sino que puede incluir una mezcla de varios.
cosas = ['Tomates', 2, True, 'Plátanos', 3.14]
Sets en Python
Al igual que las listas, los sets (o conjuntos) también sirven para almacenar varios datos en una sola variable. A diferencia de las listas, los sets son no ordenados y sin índices, por lo que no podemos acceder a un elemento por su posición. También son no modificables, por lo que al contrario que en las listas, una vez hemos añadido un nuevo elemento no podemos cambiar su valor. Tampoco admiten elementos repetidos.
Si hay tantas cosas que tenían las listas pero de las que carecen los conjuntos, ¿por qué querríamos a utilizarlos? Ya que aunque parezca que las listas son más potentes, hay muchos casos en los que los sets son más deseables.
Primero veamos como crear un set. En lugar de utilizar corchetes como en las listas ([ ]), utilizamos llaves ({ }).
estudiantes = {'Jaimito', 'Juan', 'Carla', 'Valeria', 'Irene'}
Como he dicho antes, los conjuntos no admiten elementos repetidos, por lo que si hubiera un caso en la universidad en el que no pudiéramos tener estudiantes con el mismo nombre, los sets serían la mejor opción, y su uso sería tan sencillo como esto.
estudiantes = {'Jaimito', 'Juan', 'Carla', 'Valeria', 'Irene', 'Juan'} print(estudiantes)
Si ves el resultado de esta ejecución, verás que ‘Juan’ sólo aparece una vez.
Añadir elementos a un conjunto es muy sencillo, sólo tenemos que usar el método add. Este método añade el elemento sólo si no existe previamente en el conjunto.
estudiantes.add('Paco')
Tuplas en Python
Las tuplas son otro tipo de estructura de datos. Estas son ordenadas y no modificables.
Cuando decimos que son ordenadas, es que al igual que con las listas podemos acceder a ellas mediante su posición. Las tuplas se inicializan usando paréntesis.
mis_estudiantes = ('Jaimito', 'Juan', 'Carla', 'Valeria', 'Irene', 'Juan')
Cuando decimos que son no modificables, es que una vez se ha creado la tupla, no se pueden editar sus valores, ni añadir elementos ni eliminarlos.
Una característica de las tuplas es que podemos asignar cada uno de sus valores a una variable.
jaimito, juan, carla = ('Jaimito', 'Juan', 'Carla')
Diccionarios
El último tipo de estructura de datos del que hablaremos son los diccionarios. Son uno de los tipos más versátiles ya que permiten trabajar con diferentes tipos de datos y añadirles toda la complejidad que queramos.
La forma más simple de un diccionario es su par clave – valor. Esto quiere decir que si queremos añadir un valor al diccionario como si fuera una lista, en lugar de organizarse por posición los valores se ordenan por la clave que pongamos, esto lo veremos mejor con un ejemplo.
estudiante = {'Nombre': 'Jaimito'}
La gran ventaja de los diccionarios es que permiten poner la estructura que queramos y poner cualquier tipo de variable a los valores de esta estructura. Ahora veremos un ejemplo más complejo que el anterior.
estudiante = { 'Nombre': 'Jaimito', 'Edad': 18, 'Notas': [7, 8, 5, 6, 7], 'Familia': { 'Pablo': { 'Relación': 'Padre', 'Edad': 50 } } }
En este ejemplo, nuestro diccionario estudiante, contiene varios claves. En primer lugar vemos unos datos de caracteres como el Nombre y numérico como la Edad, además vemos una lista que contiene valores numéricos representando las últimas notas de Jaimito.
Para demostrar la complejidad que nos permite tener un diccionario, hemos creado un campo Familia, en el que hemos puesto algunos datos del padre de Jaimito. No tendríamos por qué pararnos aquí, sino que podríamos añadir todo el árbol genealógico de la familia de Jaimito.
Operaciones con diccionarios
Hemos visto como crear un diccionario de cero, pero qué tenemos que hacer si este diccionario ya estuviera creado y quisiéramos añadirle valores. Es lo que veremos a continuación.
estudiante['País'] = 'España'
Y si quisiéramos acceder a valores del diccionario.
estudiante = { 'Nombre': 'Jaimito', 'Edad': 18 } print(estudiante['Edad'])
También podemos saber todas las claves que tiene un diccionario.
print(estudiante.keys())
Conclusiones
En este post hemos visto los 4 tipos de estructuras de datos en Python y cómo utilizarlos. Ahora que ya conocemos cómo podemos almacenar datos en variables, es el momento de empezar a trabajar con programas complejos en los que podamos sacarle más partido a este lenguaje. En los próximos posts haremos justamente esto.
Si no te quieres perder ninguna novedad, apúntate a nuestra newsletter o únete a nuestra comunidad de slack.
Por supuesto si tienes cualquier duda, déjala en los comentarios o escríbenos directamente. ¡Gracias por pasar por aquí!