9.1 Características de los arrays de tamaño fijo
Los arrays de tamaño fijo son arrays cuyo tamaño se determina al momento de su creación y no puede cambiar durante la ejecución del programa. En Python, puedes crear arrays de tamaño fijo usando la librería array o usar listas. Aunque las listas en Python pueden cambiar de tamaño, se utilizan de forma similar a los arrays en otros lenguajes.
Características de los arrays de tamaño fijo:
- Tamaño fijo: El tamaño del array se establece al momento de su creación y no puede cambiar.
- Homogeneidad: Todos los elementos del array deben ser del mismo tipo.
- Acceso rápido por índice: El acceso a los elementos del array se realiza en tiempo constante
O(1). - Inmutabilidad de tamaño: La cantidad de elementos en el array permanece constante, y no es posible agregar nuevos elementos.
Ejemplo de creación de un array de tamaño fijo en Python:
Usando la librería array:
import array
# Creación de un array de enteros (tipo 'i' para int)
arr = array.array('i', [1, 2, 3, 4, 5])
# Acceso a los elementos
print(arr[2]) # Salida: 3
# Cambio del valor de un elemento
arr[2] = 10
print(arr) # Salida: array('i', [1, 2, 10, 4, 5])
Usando una lista (simulando un array de tamaño fijo):
# Creación de una lista de tamaño fijo
arr = [0] * 5
# Inicialización de elementos
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
# Acceso a los elementos
print(arr[2]) # Salida: 3
# Cambio del valor de un elemento
arr[2] = 10
print(arr) # Salida: [1, 2, 10, 4, 5]
9.2 Ventajas y desventajas de los arrays de tamaño fijo
Todo tiene sus pros y contras, y los arrays fijos no son la excepción.
Ventajas:
- Acceso rápido por índice: El acceso a cualquier elemento del array se realiza en tiempo constante
O(1), lo que hace a los arrays muy eficientes para la lectura de datos. - Simplicidad de implementación: Los arrays son fáciles de entender y usar, y se pueden implementar y aplicar de forma sencilla en varias tareas.
- Uso eficiente de la memoria: Dado que el tamaño del array es fijo, la memoria se asigna al momento de la creación del array, lo que evita gastos en la reasignación de memoria.
- Previsibilidad: El tamaño fijo del array facilita la gestión de la memoria y la previsibilidad en el uso de recursos.
Desventajas:
- Inmutabilidad de tamaño: El tamaño del array se establece al momento de su creación y no puede cambiar. Esto significa que necesitas conocer el tamaño necesario del array de antemano o arriesgarte a asignar memoria en exceso.
- Costos de inserción y eliminación: La inserción y eliminación de elementos puede ser costosa en términos de tiempo, ya que requiere el desplazamiento de elementos. En el peor de los casos, insertar o eliminar un elemento en medio del array toma
O(n)tiempo. - Uso ineficiente de memoria: Si el array no se utiliza por completo, las celdas de memoria restantes permanecen vacías, lo que puede llevar a un uso ineficiente de la memoria.
- Flexibilidad limitada: Los arrays no permiten cambiar dinámicamente de tamaño, lo que los hace menos flexibles en comparación con las estructuras de datos dinámicas como las listas.
9.3 Ejemplos de uso y aplicación
Aquí hay algunos ejemplos de uso y aplicación de arrays de tamaño fijo.
Ejemplo 1: Tablas y matrices
Los arrays de tamaño fijo a menudo se utilizan para representar tablas y matrices, donde el tamaño se conoce de antemano.
import numpy as np
# Creación de una matriz 3x3 con tamaño fijo
matrix = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# Acceso a los elementos de la matriz
print(matrix[1][2]) # Salida: 6
# Cambio de un elemento de la matriz
matrix[1][2] = 10
print(matrix)
# Salida:
# [[ 1 2 3]
# [ 4 5 10]
# [ 7 8 9]]
Ejemplo 2: Buffers y cachés
Los arrays de tamaño fijo se utilizan para crear buffers y cachés, donde el tamaño del buffer es conocido de antemano y no cambia.
# Buffer de tamaño fijo para la lectura de datos
buffer_size = 1024
buffer = bytearray(buffer_size)
# Llenado del buffer con datos
data = b"Hello, World!"
buffer[:len(data)] = data
print(buffer[:len(data)]) # Salida: b'Hello, World!'
Ejemplo 3: Almacenamiento de datos de tiempo y fechas
Los arrays de tamaño fijo pueden usarse para almacenar datos de tiempo y fechas, como el número de días en cada mes.
En este ejemplo, estamos emulando el comportamiento de un array fijo a través de la clase list:
# Número de días en cada mes (año no bisiesto)
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# Acceso a los datos
month = 2 # Febrero
print(f"En febrero hay {days_in_month[month - 1]} días") # Salida: En febrero hay 28 días
GO TO FULL VERSION