Estructuras de datos con Python en 8 minutos: Listas, Tuplas, Conjuntos y Diccionarios

 Tutorial de Estructuras de Datos en Python 🐍

Introducción

¿No has tenido suficiente con este vídeo? ¿Tu ambición no tiene límites? ¿O es que tienes que aprobar ese examen que sí te tiene al límite? Sea lo que sea, empecemos...

📋 Listas

En el vídeo anterior hablamos sobre las listas, pero ahora vamos a profundizar en ellas.

Características de las listas:

  • Secuencia de datos ordenados (la posición importa)

  • Heterogénea (puede contener distintos tipos de datos)

  • Mutable (podemos cambiar la secuencia)

python
# Para crear una lista se usan corchetes
lista_vacia = []  # esto sería una lista vacía

# Lista con distintos tipos de datos
mi_lista = [1, "hola", 3.14, True, [1, 2, 3]]
print(mi_lista)  # visualizamos con print

# Acceder a elementos usando índices
print(mi_lista[0])  # 1 (empezamos con el 0)
print(mi_lista[1])  # "hola"
print(mi_lista[2])  # 3.14
# print(mi_lista[5])  # Error: índice fuera de límite

# Índices negativos (acceso desde el final)
print(mi_lista[-1])  # [1, 2, 3] (último elemento)
print(mi_lista[-2])  # True (penúltimo elemento)

# Sublistas (slicing)
sub_lista = mi_lista[1:4]  # desde el índice 1 hasta el 3
print(sub_lista)  # ['hola', 3.14, True]

# Modificar elementos
mi_lista[2] = "python"  # cambiamos el tercer elemento
print(mi_lista)  # [1, 'hola', 'python', True, [1, 2, 3]]

# Métodos útiles de listas
mi_lista.append("nuevo")  # agrega elemento al final
print(mi_lista.count(1))  # cuenta apariciones del elemento
print(mi_lista.index("hola"))  # posición de la primera aparición
mi_lista.remove(True)  # elimina la primera aparición del elemento

🔒 Tuplas

Características de las tuplas:

  • Secuencia ordenada

  • Heterogénea

  • Inmutable (no se puede modificar una vez creada)

python
# Para crear una tupla usamos paréntesis
tupla_vacia = ()  # tupla vacía

# Tupla con elementos
mi_tupla = (1, "hola", 3.14, True)
print(mi_tupla)

# Acceder a elementos (igual que las listas)
print(mi_tupla[1])  # "hola"
print(mi_tupla[-1])  # True

# Las tuplas son inmutables
# mi_tupla[0] = 5  # Error: no se puede modificar

# Métodos de tuplas
print(mi_tupla.count("hola"))  # cuenta apariciones
print(mi_tupla.index(3.14))  # posición del elemento

# Tupla de un solo elemento (necesita coma)
tupla_un_elemento = (5,)  # esto es una tupla
no_tupla = (5)  # esto es solo el número 5

🎯 Conjuntos (Sets)

Características de los conjuntos:

  • Colección no ordenada

  • Heterogénea (solo con elementos inmutables)

  • Mutable

  • Sin elementos repetidos

python
# Para crear conjuntos usamos set()
conjunto_vacio = set()  # conjunto vacío

# Conjunto a partir de una lista
mi_conjunto = set([1, 2, 3, 2, 1])  # elimina duplicados
print(mi_conjunto)  # {1, 2, 3}

# Conjunto a partir de una tupla
conjunto_tupla = set((1, 2, 3))
print(conjunto_tupla)

# Conjunto a partir de un string (crea conjunto de caracteres)
conjunto_string = set("hola")
print(conjunto_string)  # {'h', 'o', 'l', 'a'}

# Métodos para modificar conjuntos
mi_conjunto.add(4)  # añadir elemento
print(mi_conjunto)  # {1, 2, 3, 4}

mi_conjunto.remove(2)  # eliminar elemento
print(mi_conjunto)  # {1, 3, 4}

# Operaciones de conjuntos
conjunto1 = {1, 2, 3, 4}
conjunto2 = {3, 4, 5, 6}

# Intersección (elementos comunes)
interseccion = conjunto1.intersection(conjunto2)
print(interseccion)  # {3, 4}

# Equivalente con operador &
interseccion_operador = conjunto1 & conjunto2
print(interseccion_operador)  # {3, 4}

# Subconjunto
conjunto3 = {3, 4}
print(conjunto3.issubset(conjunto1))  # True
print(conjunto3.issubset(conjunto2))  # True

📖 Diccionarios

Características de los diccionarios:

  • Relacionan pares clave-valor (key-value)

  • No tiene orden

  • Heterogéneo con clave inmutable

  • Mutable

python
# Crear diccionario vacío
diccionario_vacio = {}  # o dict()

# Diccionario con elementos
mi_diccionario = {
    "nombre": "Ana",
    "edad": 25,
    "ciudad": "Madrid"
}
print(mi_diccionario)

# Acceder a valores
print(mi_diccionario["nombre"])  # "Ana"
print(mi_diccionario.get("edad"))  # 25

# Modificar valores
mi_diccionario["edad"] = 26
print(mi_diccionario["edad"])  # 26

# Añadir nuevo par clave-valor
mi_diccionario["profesion"] = "programadora"
print(mi_diccionario)

# Otras formas de crear diccionarios
# Usando dict() con lista de tuplas
diccionario_tuplas = dict([("a", 1), ("b", 2), ("c", 3)])
print(diccionario_tuplas)

# Usando claves como strings (método más común)
diccionario_directo = dict(a=1, b=2, c=3)
print(diccionario_directo)

# Métodos útiles
claves = mi_diccionario.keys()  # vista de las claves
valores = mi_diccionario.values()  # vista de los valores
pares = mi_diccionario.items()  # vista de pares clave-valor

print(list(claves))  # ['nombre', 'edad', 'ciudad', 'profesion']
print(list(valores))  # ['Ana', 26, 'Madrid', 'programadora']
print(list(pares))  # [('nombre', 'Ana'), ('edad', 26), ...]

# Eliminar elemento
valor_eliminado = mi_diccionario.pop("ciudad")
print(valor_eliminado)  # "Madrid"
print(mi_diccionario)  # sin la clave "ciudad"

💡 Ejercicios Prácticos

Ejercicio 1: ¿Cuál es la salida de este código?

python
lista = [1, 2, 3, 4, 5]
resultado = lista[1:4] + lista[-2:-1]
print(resultado)

Ejercicio 2: ¿Qué muestra este código?

python
tupla = (1, 2, 3, 2, 1)
resultado = tupla.count(2) + tupla.index(3)
print(resultado)

Ejercicio 3: ¿Cuál es el resultado?

python
conjunto_a = {1, 2, 3}
conjunto_b = {3, 4, 5}
resultado = conjunto_a | conjunto_b
print(resultado)

Ejercicio 4: ¿Qué devuelve este código?

python
diccionario = {"a": 1, "b": 2, "c": 3}
resultado = list(diccionario.values())[1] + list(diccionario.keys())[0]
print(resultado)

🎓 Conclusión

¡Y hasta aquí el tutorial! Recuerda que la práctica es esencial para dominar estas estructuras de datos. Te dejo el enlace de Colab en la descripción donde he realizado todo lo que has visto, además de las soluciones a los ejercicios.

¡Dale al botón de suscribirte si quieres más contenido! (Es broma, voy a hacerlo te suscribas o no, pero oye... ¡es gratis! ¡Púlsalo!)

Comentarios

Entradas populares de este blog

¿Qué es un Closure?

4 tipos de colecciones de datos más

Calculadora de edad