10.1 Características de los arrays dinámicos
Los arrays dinámicos son estructuras de datos que pueden cambiar de tamaño durante la ejecución del programa. Permiten gestionar eficazmente una colección de elementos, añadiendo y eliminando elementos sin necesidad de definir previamente el tamaño del array.
En Python, el array dinámico es la lista (clase incorporada list), que permite añadir, eliminar y modificar elementos en cualquier posición.
Características de los arrays dinámicos:
- Tamaño ajustable: Los arrays dinámicos pueden aumentar y disminuir según sea necesario.
- Acceso rápido por índice: El acceso a los elementos se realiza en tiempo constante
O(1)
. - Gestión automática de la memoria: Python gestiona automáticamente la asignación y liberación de memoria para las listas.
- Métodos convenientes para trabajar con elementos: Los métodos incorporados facilitan el añadir, eliminar y modificar elementos.
Ejemplo de creación y uso de un array dinámico en Python:
# Creación de una lista
dynamic_array = [1, 2, 3, 4, 5]
# Añadir un elemento
dynamic_array.append(6)
print(dynamic_array) # Salida: [1, 2, 3, 4, 5, 6]
# Eliminar un elemento
dynamic_array.remove(3)
print(dynamic_array) # Salida: [1, 2, 4, 5, 6]
# Acceso por índice
print(dynamic_array[2]) # Salida: 4
# Modificación de un elemento
dynamic_array[2] = 10
print(dynamic_array) # Salida: [1, 2, 10, 5, 6]
10.2 Ventajas y desventajas de los arrays dinámicos
Los arrays dinámicos tienen sus ventajas y desventajas. Vamos a verlas con más detalle.
Ventajas:
- Flexibilidad: Los arrays dinámicos pueden cambiar de tamaño según las necesidades del programa, lo que permite gestionar eficazmente la memoria y manejar volúmenes variables de datos.
- Acceso rápido por índice: Al igual que los arrays estáticos, los arrays dinámicos permiten un acceso rápido a los elementos por índice en tiempo constante
O(1)
. - Facilidad de uso: Los métodos incorporados de Python para trabajar con listas (como append, remove, insert) facilitan la manipulación de elementos y hacen que el código sea más legible y mantenible.
- Gestión automática de la memoria: Python gestiona automáticamente la memoria para los arrays dinámicos, liberando al programador de la necesidad de asignar y liberar memoria manualmente.
Desventajas:
- Redistribución de memoria: Al aumentar el tamaño de un array dinámico, puede ser necesario redistribuir la memoria, lo que implica copiar elementos a una nueva área de memoria. Esto puede ralentizar temporalmente la ejecución del programa.
- Costes de inserción y eliminación de elementos: Insertar y eliminar elementos en medio de un array requiere desplazamiento de elementos, lo que toma un tiempo de
O(n)
. - Pequeños costes adicionales por gestión: Comparado con lenguajes de bajo nivel como C, los arrays dinámicos en Python tienen costos adicionales asociados con la gestión automática de la memoria y el manejo de excepciones.
10.3 Ejemplos de uso y aplicación
Veamos algunos ejemplos de uso de arrays dinámicos en Python.
1. Implementación de una lista dinámica de tareas:
tasks = []
# Añadir tareas
tasks.append("Task 1")
tasks.append("Task 2")
tasks.append("Task 3")
# Completar una tarea y eliminarla de la lista
completed_task = tasks.pop(0)
print(f"Completed: {completed_task}")
print(f"Remaining tasks: {tasks}") # Salida: Remaining tasks: ['Task 2', 'Task 3']
2. Implementación de una lista dinámica de objetos:
students = []
# Añadir estudiantes
students.append("Alice")
students.append("Bob")
students.append("Charlie")
# Eliminar un estudiante
students.remove("Bob")
print(f"Students after removal: {students}") # Salida: Students after removal: ['Alice', 'Charlie']
# Añadir un estudiante en una posición específica
students.insert(1, "David")
print(f"Students after insertion: {students}") # Salida: Students after insertion: ['Alice', 'David', 'Charlie']
GO TO FULL VERSION