Python: Estructuras de datos
Descubre las estructuras de datos en Python y aprende a usar listas, tuplas, diccionarios y conjuntos para optimizar tu código.
Aprende Python GRATIS y certifícateEstructuras de datos en Python
Las estructuras de datos constituyen uno de los pilares fundamentales de la programación en Python. Estas construcciones nos permiten organizar, almacenar y manipular información de manera eficiente, proporcionando las herramientas necesarias para resolver problemas complejos de forma elegante y optimizada.
Python ofrece un conjunto robusto de estructuras de datos integradas que cubren la mayoría de necesidades de desarrollo. Cada estructura tiene características específicas que la hacen ideal para determinados escenarios, desde el almacenamiento simple de elementos hasta la gestión de relaciones complejas entre datos.
Fundamentos de las estructuras de datos
Una estructura de datos es una forma particular de organizar información en un programa para que pueda ser utilizada de manera eficiente. La elección correcta de la estructura determina no solo la claridad del código, sino también su rendimiento y mantenibilidad.
En Python, las estructuras de datos se clasifican principalmente en dos categorías: mutables e inmutables. Las estructuras mutables permiten modificar su contenido después de la creación, mientras que las inmutables mantienen su estado original una vez definidas.
# Ejemplo de estructura mutable
lista_compras = ["pan", "leche", "huevos"]
lista_compras.append("queso") # Modificamos la lista original
# Ejemplo de estructura inmutable
coordenadas = (10, 20)
# coordenadas[0] = 15 # Esto generaría un error
Listas: flexibilidad y dinamismo
Las listas representan la estructura de datos más versátil de Python. Son colecciones ordenadas y mutables que pueden contener elementos de cualquier tipo, incluso mezclando diferentes tipos de datos en una misma lista.
# Lista heterogénea
datos_usuario = ["Ana", 28, True, 1.75]
# Operaciones básicas
numeros = [1, 2, 3, 4, 5]
numeros.insert(2, 10) # Insertar en posición específica
ultimo = numeros.pop() # Extraer último elemento
numeros.remove(10) # Eliminar por valor
La indexación en listas permite acceder a elementos específicos usando índices positivos o negativos. Los índices negativos resultan especialmente útiles para acceder a elementos desde el final de la lista.
frutas = ["manzana", "banana", "naranja", "kiwi"]
primera = frutas[0] # "manzana"
ultima = frutas[-1] # "kiwi"
penultima = frutas[-2] # "naranja"
Tuplas: inmutabilidad y eficiencia
Las tuplas son colecciones ordenadas e inmutables que ofrecen mayor eficiencia en memoria y velocidad de acceso comparadas con las listas. Su inmutabilidad las convierte en candidatas ideales para representar datos que no deben cambiar durante la ejecución del programa.
# Definición de tupla
punto_3d = (10, 20, 30)
rgb_color = (255, 128, 0)
# Desempaquetado de tuplas
x, y, z = punto_3d
rojo, verde, azul = rgb_color
Las tuplas son particularmente útiles para retornar múltiples valores desde funciones y para crear estructuras de datos simples que representen registros.
def obtener_coordenadas():
return (42.3601, -71.0589) # Latitud, longitud
latitud, longitud = obtener_coordenadas()
Diccionarios: mapeo clave-valor
Los diccionarios implementan una estructura de mapeo que asocia claves únicas con valores correspondientes. Esta estructura resulta fundamental para representar relaciones y crear índices eficientes de búsqueda.
# Diccionario de información personal
persona = {
"nombre": "Carlos",
"edad": 32,
"ciudad": "Madrid",
"activo": True
}
# Acceso y modificación
nombre = persona["nombre"]
persona["telefono"] = "123-456-789" # Agregar nueva clave
edad = persona.get("edad", 0) # Acceso seguro con valor por defecto
Los diccionarios en Python mantienen el orden de inserción desde la versión 3.7, lo que los hace predecibles para iteraciones y procesamiento secuencial.
# Iteración sobre diccionarios
for clave, valor in persona.items():
print(f"{clave}: {valor}")
# Comprensión de diccionarios
cuadrados = {x: x**2 for x in range(1, 6)}
# Resultado: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Conjuntos: unicidad y operaciones matemáticas
Los conjuntos (sets) almacenan colecciones de elementos únicos sin orden específico. Proporcionan operaciones matemáticas eficientes como unión, intersección y diferencia, siendo ideales para eliminar duplicados y realizar comparaciones entre grupos de datos.
# Creación de conjuntos
numeros_pares = {2, 4, 6, 8, 10}
numeros_primos = {2, 3, 5, 7, 11}
# Operaciones de conjuntos
union = numeros_pares | numeros_primos
interseccion = numeros_pares & numeros_primos
diferencia = numeros_pares - numeros_primos
Los conjuntos resultan especialmente útiles para eliminar duplicados de listas y verificar pertenencia de elementos de forma eficiente.
# Eliminar duplicados de una lista
lista_con_duplicados = [1, 2, 2, 3, 3, 3, 4]
lista_unica = list(set(lista_con_duplicados))
# Verificación de pertenencia
usuarios_activos = {"ana", "carlos", "maria"}
if "carlos" in usuarios_activos:
print("Usuario encontrado")
Selección de la estructura apropiada
La elección de la estructura de datos correcta depende de varios factores: el tipo de operaciones que realizaremos, la frecuencia de modificaciones, los requisitos de rendimiento y la naturaleza de los datos que almacenaremos.
- Usa listas cuando necesites una colección ordenada y mutable con acceso por índice
- Usa tuplas para datos inmutables, coordenadas, o cuando retornes múltiples valores
- Usa diccionarios para mapeos clave-valor y búsquedas eficientes
- Usa conjuntos para eliminar duplicados y operaciones matemáticas entre grupos
La comprensión profunda de estas estructuras fundamentales proporciona la base sólida necesaria para abordar algoritmos más complejos y patrones de diseño avanzados en el desarrollo con Python.
Lecciones de este módulo de Python
Lecciones de programación del módulo Estructuras de datos del curso de Python.
Ejercicios de programación en este módulo de Python
Evalúa tus conocimientos en Estructuras de datos con ejercicios de programación Estructuras de datos de tipo Test, Puzzle, Código y Proyecto con VSCode.