9.1 Caratteristiche degli array di dimensione fissa
Gli array di dimensione fissa sono array il cui dimensione è determinato al momento della loro creazione e non può essere modificato durante l'esecuzione del programma. In Python, gli array di dimensione fissa possono essere creati utilizzando la libreria array
o utilizzando le liste, sebbene le liste in Python possano variare di dimensione, vengono usate similmente agli array in altri linguaggi.
Caratteristiche degli array di dimensione fissa:
- Dimensione fissa: La dimensione dell'array è impostata al momento della creazione e non può essere cambiata.
- Omogeneità: Tutti gli elementi dell'array devono essere dello stesso tipo.
- Accesso rapido per indice: L'accesso agli elementi dell'array avviene in tempo costante
O(1)
. - Immutabilità della dimensione: Il numero di elementi nell'array rimane costante e l'aggiunta di nuovi elementi non è possibile.
Esempio di creazione di un array di dimensione fissa in Python:
Utilizzando la libreria array
:
import array
# Creazione di un array di interi (tipo 'i' per int)
arr = array.array('i', [1, 2, 3, 4, 5])
# Accesso agli elementi
print(arr[2]) # Output: 3
# Modifica del valore di un elemento
arr[2] = 10
print(arr) # Output: array('i', [1, 2, 10, 4, 5])
Utilizzando una lista (imitando un array di dimensione fissa):
# Creazione di una lista di dimensione fissa
arr = [0] * 5
# Inizializzazione degli elementi
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
# Accesso agli elementi
print(arr[2]) # Output: 3
# Modifica del valore di un elemento
arr[2] = 10
print(arr) # Output: [1, 2, 10, 4, 5]
9.2 Vantaggi e svantaggi degli array di dimensione fissa
Tutto ha i suoi pro e contro, per gli array fissi sono tali.
Vantaggi:
- Accesso rapido per indice: L'accesso a qualsiasi elemento dell'array avviene in tempo costante
O(1)
, rendendo gli array molto efficienti per la lettura dei dati. - Semplicità di implementazione: Gli array sono facili da capire e utilizzare, semplici da implementare e applicare in vari compiti.
- Uso efficiente della memoria: Poiché la dimensione dell'array è fissa, la memoria viene allocata immediatamente alla creazione dell'array, evitando i costi di riallocazione della memoria.
- Prevedibilità: La dimensione fissa dell'array semplifica la gestione della memoria e la prevedibilità dell'uso delle risorse.
Svantaggi:
- Immutabilità della dimensione: La dimensione dell'array è fissata alla sua creazione e non può essere cambiata. Questo significa che bisogna sapere in anticipo la dimensione necessaria dell'array o rischiare un'eccessiva allocazione di memoria.
- Costi di inserimento e rimozione: Inserire e rimuovere elementi può essere oneroso in termini di tempo, poiché richiede lo spostamento degli elementi. Nel peggiore dei casi, l'inserimento o la rimozione di un elemento nel mezzo dell'array richiede
O(n)
tempo. - Uso inefficiente della memoria: Se l'array non è completamente utilizzato, le celle di memoria rimanenti rimangono vuote, il che può portare a un uso inefficiente della memoria.
- Flessibilità limitata: Gli array non consentono di modificare dinamicamente la dimensione, rendendoli meno flessibili rispetto alle strutture dati dinamiche come le liste.
9.3 Esempi di utilizzo e applicazione
Ecco alcuni esempi di utilizzo e applicazione degli array di dimensione fissa.
Esempio 1: Tabelle e matrici
Gli array di dimensione fissa vengono spesso utilizzati per rappresentare tabelle e matrici, dove la dimensione è nota in anticipo.
import numpy as np
# Creazione di una matrice 3x3 di dimensione fissa
matrix = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# Accesso agli elementi della matrice
print(matrix[1][2]) # Output: 6
# Modifica di un elemento della matrice
matrix[1][2] = 10
print(matrix)
# Output:
# [[ 1 2 3]
# [ 4 5 10]
# [ 7 8 9]]
Esempio 2: Buffer e cache
Gli array di dimensione fissa vengono utilizzati per creare buffer e cache, dove la dimensione del buffer è nota in anticipo e non cambia.
# Buffer di dimensione fissa per la lettura dei dati
buffer_size = 1024
buffer = bytearray(buffer_size)
# Riempimento del buffer con i dati
data = b"Hello, World!"
buffer[:len(data)] = data
print(buffer[:len(data)]) # Output: b'Hello, World!'
Esempio 3: Archiviazione di dati su tempo e date
Gli array di dimensione fissa possono essere utilizzati per memorizzare dati su tempo e date, come il numero di giorni in ogni mese.
In questo esempio emuliamo il comportamento di un array fisso tramite la classe list
:
# Numero di giorni in ogni mese (anno non bisestile)
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# Accesso ai dati
month = 2 # Febbraio
print(f"A febbraio ci sono {days_in_month[month - 1]} giorni") # Output: A febbraio ci sono 28 giorni
GO TO FULL VERSION