CodeGym /Cursos /Python SELF ES /Arrays de tamaño fijo

Arrays de tamaño fijo

Python SELF ES
Nivel 52 , Lección 2
Disponible

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