CodeGym /Corso Java /Python SELF IT /Array di dimensione fissa

Array di dimensione fissa

Python SELF IT
Livello 52 , Lezione 2
Disponibile

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