Si hace poco empezaste a aprender Python, probablemente te hayas topado con las estructuras de datos. Aunque pueden parecer complicadas al principio, las estructuras de datos son herramientas útiles que te ayudarán a resolver los problemas de manera más rápida, realizar tareas de forma más eficiente y escribir mejor tu código en Python.
En las siguientes secciones, nos sumergiremos en las estructuras de datos y comprenderemos las funciones que desempeñan en la programación en Python. También cubriremos cómo puedes dominar las estructuras de datos para llevar a cabo proyectos específicos.
¿Qué son las estructuras de datos en Python?
Las estructuras de datos organizan y almacenan la información para facilitar el acceso, la modificación y la navegación. Estas estructuras de código explican la relación entre los datos y las diferentes operaciones lógicas que puedes realizar con ellos. También determinan las funcionalidades que puedes implementar en los datos y cómo los recopilas.
Python tiene cuatro estructuras de datos integradas:
- Listas
- Tuplas
- Conjuntos
- Diccionarios
Puedes utilizar estas estructuras de datos de Python para resolver tareas y situaciones específicas, así como proporcionar un framework sencillo para organizar programas.
¿Por qué son importantes las estructuras de datos en Python?
La gestión, organización y almacenamiento adecuado de grandes conjuntos de datos es importante ya que permite el acceso y modificación de manera más fácil. Las estructuras de datos te permiten organizar tus datos de manera sistemática y lógica, lo que a su vez te facilita resolver problemas de manera más rápida y eficiente.
Algunas estructuras de datos te permiten recuperar rápidamente información específica de una base de datos, acelerar el procesamiento de datos, crear conexiones relacionales o jerárquicas claras entre puntos de datos.
Si bien hay muchas maneras de clasificar las estructuras de datos en Python, una forma es categorizarlas en tipos de datos primitivos y no primitivos.
Tipos de estructuras de datos en Python
- Estructuras de datos primitivas: estas estructuras contienen valores de datos simplificados y sirven como base para manipular información. Las cuatro estructuras de datos primitivas son integers, float, string, y boolean.
- Estructuras de datos no primitivas: estas estructuras de datos almacenan valores, así como también una colección de valores, en diferentes formatos. Las cuatro estructuras de datos no primitivas integradas son listas, tuplas, diccionarios y conjuntos.
Para una inmersión más profunda en la semántica central y la sintaxis de Python, consulta la Referencia Oficial del Lenguaje Python.
Estructuras de Datos de Python Incorporadas (no primitivas)
Como sugiere el nombre, estas estructuras de datos no primitivas están integradas con Python. La mayoría de las estructuras de datos de Python existentes son formas modificadas de estas estructuras de datos no primitivas o han construido su base sobre una de estas estructuras de datos.
1. Listas en Python (list)
Una lista es una colección ordenada de elementos y es una de las estructuras de datos más esenciales para implementar en cualquier proyecto de Python. Como se trata de una “colección ordenada”, cada elemento de la lista tiene un orden que lo identifica de manera única.
Puedes asignar direcciones a cada elemento de la lista (que son índices). El valor del índice comienza en cero y continúa hasta el último elemento (el índice positivo). También existe el índice negativo, que comienza en -1. Esto te permite acceder a los elementos desde el final hasta el inicio.
Al crear una lista, debe encerrar todos los elementos entre corchetes y separarlos con comas. Esto le permite a Python saber que has creado una lista.
Aquí tienes una lista básica:
List_C = [elemento 1, elemento 2, elemento 3…, elemento n]
Las listas creadas en Python son mutables, lo que significa que puedes modificarlas después de haberlas creado. Esto permite que un usuario busque, agregue, cambie, elimine y mueva elementos de una lista.
2. Conjuntos en Python (set)
Los conjuntos son una colección no organizada de elementos únicos. Al igual que las listas, los conjuntos son mutables (lo que significa que puedes modificarlos, reemplazarlos o agregarlos después de crearlos). Y al igual que las listas, debes encerrar los conjuntos entre corchetes para que aparezcan en el resultado final. Sin embargo, nunca dos valores deben ser iguales.
Puedes usar conjuntos cuando la inclusión de un objeto en una colección es más importante que el orden de los objetos.
Aquí tienes un conjunto básico:
set_c = {“elemento 1”, “elemento 2”, “elemento 3”,….., “elemento n”}
3. Tuplas en Python (tuple)
Si bien las tuplas son similares a las listas, son inmutables (lo que significa que no puedes modificarlas después de haberlas creado). Al igual que las listas, también presentan una colección ordenada de objetos, pero están diseñadas a propósito para tener una funcionalidad limitada.
Mientras que los elementos que se encuentran en una lista se encierran entre paréntesis, en tuplas, el uso de paréntesis es opcional.
Aquí tienes una tupla básica:
tuple_A = (elemento 1, elemento 2, elemento 3,…, elemento n)
4. Diccionarios en Python (dictionary)
En Python, un diccionario es un contenedor no organizado y mutable que almacena pares clave-valor. Puedes acceder a los valores en el diccionario ingresando una clave única.
Puedes hacer diccionarios usando corchetes, pero deben incluir pares clave-valor separados por comas. Además, dos puntos deben separar cada clave de su valor.
Aquí tienes la sintaxis básica:
dictionary = {“nombre clave”: valor}
Estructuras de datos definidas por el usuario en Python (no primitivas)
1. Lista enlazada en Python
Las listas enlazadas son estructuras de datos lineales que contienen múltiples nodos. Están vinculadas entre sí mediante punteros, mientras que el nodo de cada lista enlazada consta de datos y un puntero (pointer) con el nombre “siguiente” (next). Estas estructuras de datos se encuentran con mayor frecuencia en reproductores de música y aplicaciones de visualización de imágenes.
Ilustración de lista enlazada, estructura de datos de Python
Fuente de la imagen: Alpha Coding Skills
Si bien la biblioteca estándar de Python no tiene listas enlazadas, los programadores pueden implementar esta estructura de datos mediante el uso de nodos.
2. Stack en Python
Los stacks son estructuras de datos lineales que almacenan información en pilas. Se basan en los principios de Primero en entrar/Último en salir (FILO) y Último en entrar/Primero en salir (LIFO). La inserción de un nuevo elemento en un extremo provoca la eliminación de un elemento del mismo. Puedes usar las operaciones “push” y “pop” para indicar inserciones y eliminaciones.
Ilustración del principio push y pop en el stack, estructura de datos de Python.
Fuente de la imagen: Alpha Coding Skills
Puedes implementar stacks utilizando estructuras de datos y módulos de la biblioteca de Python. Estos incluyen queue.LifoQueue, collections.deque, y lista.
3. Árbol en Python
Son estructuras de datos no lineales y tienen raíces y nodos. La raíz es el nodo inicial del que se originan los datos y los nodos son los otros puntos de datos disponibles. El primer nodo se conoce como padre y el nodo que sigue se conoce como hijo.
Los árboles tienen niveles que muestran el grado de profundidad de los datos. En esta estructura, los nodos inferiores se conocen como hojas.
Ilustración del árbol, estructura de datos de Python
Fuente de la imagen: Tutoriales de Python
5. Gráficos en Python
En Python, un gráfico representa pictóricamente un conjunto de objetos y algunos pares de objetos que están conectados por enlaces. Los vértices (nodos) representan los objetos interconectados y los enlaces que unen los vértices se conocen como aristas. Puedes usar el tipo de datos del diccionario Python para representar gráficos, con las “claves” del diccionario representando los vértices. Los valores indican los bordes entre los vértices.
6. Hashmap en Python
Puedes usar hashmaps para implementar aplicaciones (como una agenda telefónica) y completar datos según listas, entre otras aplicaciones. Una función hash genera el valor de índice o la dirección del elemento de datos. El valor del índice actuará como la clave para el valor de los datos. Esto te permite acceder a los datos más rápidamente.
Estructuras de datos primitivas en Python
Las estructuras de datos primitivas solo pueden almacenar un tipo de datos. Además, deben contener algún tipo de valor y el tamaño depende del tipo de estructura de datos.
1. Integers en Python
En Python, los integers son números enteros cero, positivos o negativos. No tienen parte fraccionaria y tienen una precisión ilimitada.
Los enteros pueden tener valores octales, binarios o hexadecimales.
2. Float en Python
En Python, float representa el número de coma flotante. Se utilizan para representar números reales y se escriben con un punto decimal que divide las partes enteras y fraccionarias.
Python muestra los valores flotantes como valores de doble precisión de 64 bits. A su vez, el valor máximo que puede alcanzar cualquier número de coma flotante es aproximadamente 1,8 x 10308. Python mostrará cualquier número mayor que este mediante el string inf.
3. String en Python
En Python, un string es una colección de alfabetos, caracteres o palabras. Si bien es una de las estructuras de datos más primitivas, también es vital para la manipulación de datos. Python tiene una clase de string incorporado conocido como str, que es inmutable.
4. Boolean en Python
Este es uno de los tipos de datos integrados de Python y representa el valor real de una expresión. El tipo boolean de Python tiene solo dos valores posibles: verdadero o falso. En otras palabras, puedes evaluar cualquier expresión y obtener como respuesta verdadero o falso.
El potencial de Python
Python es un lenguaje emocionante y desafiante para aprender. Una vez que lo domines, podrás aplicar Python en una amplia variedad de aplicaciones, desde análisis y visualización de datos, desarrollo de software y aplicaciones, hasta ejecución de aprendizaje automático e inteligencia artificial.
¿Qué esperas? Python es el lenguaje de programación predilecto para principiantes en programación y tienes infinidad de materiales disponibles en internet. Si ya estás listo y quieres tomartelo en serio, podemos guiarte para que sepas si un bootcamp es lo que estás buscando e incluso, qué programa se adapta mejor a tus necesidades: