CodeGym /Curso de Java /Python SELF ES /Arrays dinámicos

Arrays dinámicos

Python SELF ES
Nivel 52 , Lección 3
Disponible

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 en Python

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']
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION