9.1 Características dos arrays de tamanho fixo
Arrays de tamanho fixo são aqueles cujo tamanho é determinado no momento da criação e não pode ser alterado durante a execução do programa. No Python, você pode criar arrays de tamanho fixo usando a biblioteca array
ou usando listas. Embora listas no Python possam mudar de tamanho, elas são usadas de forma semelhante a arrays em outras linguagens.
Características dos arrays de tamanho fixo:
- Tamanho fixo: O tamanho do array é definido na sua criação e não pode ser alterado.
- Homogeneidade: Todos os elementos do array devem ser do mesmo tipo.
- Acesso rápido por índice: O acesso aos elementos do array é feito em tempo constante
O(1)
. - Tamanho imutável: O número de elementos do array permanece constante, e não é possível adicionar novos elementos.
Exemplo de criação de um array de tamanho fixo em Python:
Usando a biblioteca array
:
import array
# Criando um array de inteiros (tipo 'i' para int)
arr = array.array('i', [1, 2, 3, 4, 5])
# Acesso aos elementos
print(arr[2]) # Saída: 3
# Modificando o valor de um elemento
arr[2] = 10
print(arr) # Saída: array('i', [1, 2, 10, 4, 5])
Usando lista (imitando um array de tamanho fixo):
# Criando uma lista de tamanho fixo
arr = [0] * 5
# Inicialização dos elementos
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
# Acesso aos elementos
print(arr[2]) # Saída: 3
# Modificando o valor de um elemento
arr[2] = 10
print(arr) # Saída: [1, 2, 10, 4, 5]
9.2 Vantagens e desvantagens dos arrays de tamanho fixo
Tudo tem seus prós e contras, e com arrays fixos não é diferente.
Vantagens:
- Acesso rápido por índice: O acesso a qualquer elemento do array é feito em tempo constante
O(1)
, o que torna os arrays muito eficientes para leitura de dados. - Simplicidade de implementação: Arrays são simples de entender e usar, fáceis de implementar e aplicar em várias tarefas.
- Uso eficiente de memória: Como o tamanho do array é fixo, a memória é alocada de uma vez só na criação do array, evitando gastos com realocação de memória.
- Previsibilidade: O tamanho fixo do array simplifica o gerenciamento de memória e a previsibilidade no uso de recursos.
Desvantagens:
- Tamanho imutável: O tamanho do array é definido na sua criação e não pode ser alterado. Isso significa que você precisa saber o tamanho necessário do array de antemão ou correr o risco de alocar memória em excesso.
- Custo de inserção e remoção: Inserir e remover elementos pode ser caro em termos de tempo, pois requer deslocar elementos. No pior caso, a inserção ou remoção de um elemento no meio do array leva
O(n)
de tempo. - Uso ineficiente de memória: Se o array não for usado completamente, as células de memória restantes ficam vazias, o que pode levar a um uso ineficiente de memória.
- Flexibilidade limitada: Arrays não permitem alterar o tamanho dinamicamente, o que os torna menos flexíveis em comparação com estruturas de dados dinâmicas, como listas.
9.3 Exemplos de uso e aplicação
Aqui estão alguns exemplos de uso e aplicação de arrays de tamanho fixo.
Exemplo 1: Tabelas e matrizes
Arrays de tamanho fixo são frequentemente usados para representar tabelas e matrizes, onde o tamanho é conhecido de antemão.
import numpy as np
# Criando uma matriz 3x3 de tamanho fixo
matrix = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# Acesso aos elementos da matriz
print(matrix[1][2]) # Saída: 6
# Modificando um elemento da matriz
matrix[1][2] = 10
print(matrix)
# Saída:
# [[ 1 2 3]
# [ 4 5 10]
# [ 7 8 9]]
Exemplo 2: Buffers e caches
Arrays de tamanho fixo são usados para criar buffers e caches, onde o tamanho do buffer é conhecido de antemão e não muda.
# Buffer de tamanho fixo para leitura de dados
buffer_size = 1024
buffer = bytearray(buffer_size)
# Preenchendo o buffer com dados
data = b"Hello, World!"
buffer[:len(data)] = data
print(buffer[:len(data)]) # Saída: b'Hello, World!'
Exemplo 3: Armazenamento de dados sobre tempos e datas
Arrays de tamanho fixo podem ser usados para armazenar dados sobre tempos e datas, como o número de dias em cada mês.
Neste exemplo, simulamos o comportamento de um array fixo através da classe list
:
# Número de dias em cada mês (não bissexto)
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# Acesso aos dados
month = 2 # Fevereiro
print(f"Em fevereiro há {days_in_month[month - 1]} dias") # Saída: Em fevereiro há 28 dias
GO TO FULL VERSION